Private Sub InitCategoryTree(ByVal tblCategoryList As DataTable, ByVal tnRoot As TreeNode, ByVal lngParentId As Long) If tblCategoryList.Rows.Count > 0 Then For Each drowMainCategory As DataRow In tblCategoryList.Select(" Parent_id = " & lngParentId) Dim tnMainCategory As New TreeNode 'Set checkbox tnMainCategory.CheckBox = True 'Set name Dim strName As String = drowMainCategory("Name").ToString().Trim tnMainCategory.Text = strName tnMainCategory.ID = CType(drowMainCategory("Category_id"), Long) 'Set Navigate Url tnMainCategory.NavigateUrl = "ProductManagement.aspx?Category_id=" + drowMainCategory("Category_id").ToString() tnRoot.Nodes.Add(tnMainCategory) 'recursion call InitCategoryTree(tblCategoryList, tnMainCategory, CType(drowMainCategory("Category_id"), Long)) Next End If End Sub一般都是通过递归调用来构造tree,具体说明如下: 表的字段:Category_id,Parent_id, Name 上面是先一次性把数据读取出来填充tblCategoryList,再通过tblCategoryList.Select(" Parent_id = " & lngParentId)过滤条件来取得当前一级结点的数据,你也可以每次通过Parent_id去数据库读取当前节点的数据,
在初始化tree的方法内调用上面的方法: 例如 Private Sub Init() Dim tblCategoryList As DataTable = 你的数据 InitCategoryTree(tblCategoryList, 你的tree的根节点, 0)‘这里用0作为根节点的Parent_id,具体看你自己是怎么设计数据的 End Sub
把数据填充到treeview控件中
If tblCategoryList.Rows.Count > 0 Then
For Each drowMainCategory As DataRow In tblCategoryList.Select(" Parent_id = " & lngParentId)
Dim tnMainCategory As New TreeNode
'Set checkbox
tnMainCategory.CheckBox = True
'Set name
Dim strName As String = drowMainCategory("Name").ToString().Trim
tnMainCategory.Text = strName
tnMainCategory.ID = CType(drowMainCategory("Category_id"), Long)
'Set Navigate Url
tnMainCategory.NavigateUrl = "ProductManagement.aspx?Category_id=" + drowMainCategory("Category_id").ToString()
tnRoot.Nodes.Add(tnMainCategory)
'recursion call
InitCategoryTree(tblCategoryList, tnMainCategory, CType(drowMainCategory("Category_id"), Long))
Next
End If
End Sub一般都是通过递归调用来构造tree,具体说明如下:
表的字段:Category_id,Parent_id, Name
上面是先一次性把数据读取出来填充tblCategoryList,再通过tblCategoryList.Select(" Parent_id = " & lngParentId)过滤条件来取得当前一级结点的数据,你也可以每次通过Parent_id去数据库读取当前节点的数据,
例如 Private Sub Init()
Dim tblCategoryList As DataTable = 你的数据
InitCategoryTree(tblCategoryList, 你的tree的根节点, 0)‘这里用0作为根节点的Parent_id,具体看你自己是怎么设计数据的
End Sub