Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 动态构建树视图_Asp.net_Treeview - Fatal编程技术网

Asp.net 动态构建树视图

Asp.net 动态构建树视图,asp.net,treeview,Asp.net,Treeview,我必须使用来自数据库的以下数据构建一棵树: ID Name ManagerID 180002 john 180001 180003 Michel 180002 180005 smith 180003 john |_Michel |_ smith 具体来说,我需要制作一个ASP.NET TreeView控件。树视图的深度不是固定的。您没有指定是使用C#还是VB,但方法是相同的 首先,为每个顶级个体(没有Mana

我必须使用来自数据库的以下数据构建一棵树:

ID          Name     ManagerID
180002      john     180001
180003      Michel   180002
180005      smith    180003

john
 |_Michel
    |_ smith

具体来说,我需要制作一个ASP.NET TreeView控件。树视图的深度不是固定的。

您没有指定是使用C#还是VB,但方法是相同的

首先,为每个顶级个体(没有ManagerID的个体,或者使用指示顶级的特殊ManagerID代码的个体)创建一个树节点

然后,递归地为每个向当前管理器报告的个人创建一个新的TreeNode,并将其作为当前管理器的子级添加。找到向他报告的每个人,并将此功能应用于他们。当没有人向当前人员报告时停止

因此,假设您有一个包含此表详细信息的数据集,您可以执行以下操作(VB示例):


你是说用分层数据填充TreeView控件


您可以检查或。

谢谢。是否有任何方法可以避免回发,以便选择节点,但不会回发到服务器?您可以将其包装在UpdatePanel中,或者可以将树及其节点的AutoPostBack属性设置为false。
Sub PopulateTreeNode(
  CurrentNode As TreeNode,
  CurrentManagerID As String,
  Table As DataTable
) As TreeNode
  For Each Row As DataRow In _ 
  DataTable.Select("ManagerID = '" & CurrentManagerID & "'")
    Dim CurrentUser As String = Row("ID").ToString()
    Dim Node As New TreeNode(CurrentUser)
    PopulateTreeNode(Node, CurrentUser, Table)
    CurrentNode.Nodes.Add(Node)
  Next
End Sub