在 asp .net 中绑定树视图结构?

Binding a tree view structure , in asp .net?

我尝试使用下面的

创建 asp,net 树视图结构
 <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml">
     <head runat="server">
     <title>Untitled Page</title>
    </head>
<body>
<form id="form1" runat="server">
    <div>

        <asp:TreeView
            ID="TreeView1"
            runat="server" />    
    </div>
</form>

并且在代码背后

  protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
            PopulateTreeView();
    }
    private void PopulateTreeView()
    {
        DataTable treeViewData = GetTreeViewData();
        AddTopTreeViewNodes(treeViewData);

    }
    private DataTable GetTreeViewData()
    {
        string selectCommand = "SELECT top 10 idx_client,idx_branch,client_name FROM tbl_client";
        string conString =System.Configuration.ConfigurationManager.AppSettings["ConnectionString"].ToString();
        SqlDataAdapter dad = new SqlDataAdapter(selectCommand, conString);
        DataTable dtblDiscuss = new DataTable();
        dad.Fill(dtblDiscuss);
        return dtblDiscuss;
    }

    private void AddTopTreeViewNodes(DataTable treeViewData)
    {
        DataView view = new DataView(treeViewData);
        foreach (DataRowView row in view)
        {
            TreeNode newNode = new TreeNode(row["client_name"].ToString(), row["idx_client"].ToString());
            TreeView1.Nodes.Add(newNode);
            newNode.PopulateOnDemand = true;
            AddChildTreeViewNodes(treeViewData, newNode);
        }

    }

    private void AddChildTreeViewNodes(DataTable treeViewData, TreeNode parentTreeViewNode)
    {
        DataView view = new DataView(treeViewData);
        foreach (DataRowView row in view)
        {
            TreeNode newNode = new TreeNode(row["client_name"].ToString(), row["idx_client"].ToString());
            parentTreeViewNode.ChildNodes.Add(newNode);
            newNode.PopulateOnDemand = true;
            AddChildTreeViewNodes(treeViewData, newNode);
        }
    }

但是它给出了一个异常

Cannot evaluate expression because the current thread is in a stack overflow state

请指出需要进行哪些更改,因为我是第一次使用此树视图 我将如何解决异常。谁能帮帮我

问题出在你在AddChildTreeViewNodes中的递归调用:

private void AddChildTreeViewNodes(DataTable treeViewData, TreeNode parentTreeViewNode)
{
    DataView view = new DataView(treeViewData);
    foreach (DataRowView row in view)
    {
        TreeNode newNode = new TreeNode(row["client_name"].ToString(), row["idx_client"].ToString());
        parentTreeViewNode.ChildNodes.Add(newNode);
        newNode.PopulateOnDemand = true;
        // error caused by recursion below
        AddChildTreeViewNodes(treeViewData, newNode); // calls itself again REMOVE THIS
    }
}

这里发生的事情是您正在插入视图的子节点,然后尝试在其中插入另一个子节点(这反过来会做同样的事情)。这将一直发生,直到堆栈被炸毁。

我怀疑你真的不需要我标记为 REMOVE THIS

的行