如何从数据库中读出数据来控制treeview控件?

解决方案 »

  1.   

    你指的控制是什么意思?是读数据填充到treeview控件吗?
      

  2.   

    是啊
    把数据填充到treeview控件中
      

  3.   

    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去数据库读取当前节点的数据,
      

  4.   

    在初始化tree的方法内调用上面的方法:
    例如 Private Sub Init()
            Dim tblCategoryList As DataTable = 你的数据
            InitCategoryTree(tblCategoryList, 你的tree的根节点, 0)‘这里用0作为根节点的Parent_id,具体看你自己是怎么设计数据的
         End Sub