我想用TreeView控件实现我在数据库的的动态关系目前我需要有9层的树状关系,请高人指点我如何动态的添加层,读取动态的数据.请高人给个高招,急!!!

解决方案 »

  1.   

    每次改变一次库,就treeview.nodes.clear,然后重新绑定
      

  2.   

    象这样:    Dim CN As New ADODB.Connection
        Dim Rs As New ADODB.Recordset
        
        CN.ConnectionString = "Provider=sqloledb;Data Source=pmserver;Initial Catalog=Report;User Id=sa;Password=sa;"
        CN.Open
        Rs.CursorLocation = adUseClient
        Rs.Open "select * from table1", CN, adOpenDynamic, adLockBatchOptimistic
        Rs.MoveFirst
        Do While Not Rs.EOF
            Select Case Len(Trim(Rs.Fields("lno")))
                Case 3
                    TreeView1.Nodes.Add , , "key" & Trim(Rs.Fields("lno")), Rs.Fields("lname")
                Case 5
                    TreeView1.Nodes.Add "key" & Left(Trim(Rs.Fields("lno")), 3), tvwChild, "key" & Trim(Rs.Fields("lno")), Rs.Fields("lname")
                Case 7
                    TreeView1.Nodes.Add "key" & Left(Trim(Rs.Fields("lno")), 5), tvwChild, "key" & Trim(Rs.Fields("lno")), Rs.Fields("lname")
           
            End Select
            Rs.MoveNext
        Loop
        Rs.Close
        CN.Close
        For I = 1 To TreeView1.Nodes.Count
            TreeView1.Nodes(I).Expanded = True
        Next
      

  3.   

    Public Sub AddNodes()
    Dim strkey As String
    Dim mNodes As MSComctlLib.Nodes
    Dim mNode1 As MSComctlLib.Node
    Dim mNode2 As MSComctlLib.NodeDim I As LongOn Error Resume NextSet mNodes = tvwMain.Nodes
    Dim rs1 As ADODB.Recordset
    Set rs1 = New ADODB.Recordset
    With rs1
            Set .ActiveConnection = conn
            .CursorLocation = adUseClient
            .Source = "select id,mc from lb order by ID"
            .LockType = adLockReadOnly
            .CursorType = adOpenForwardOnly
            .Open
    End WithmNodes.Clear
    With rs1
            If .EOF And .BOF Then
                            Set rs1 = Nothing
                            Exit Sub
            End If
            For r = 1 To .RecordCount
                     strkey = "o" & .Fields("ID")
                     Set mNode1 = mNodes.Add(, , strkey, .Fields("mc") & "", 7, 7)
                     '第二层循环
                     Dim rs As ADODB.Recordset
                     Set rs = New ADODB.Recordset
                     
                     strsql = "select * from ws where mid=" & .Fields("id")
                     rs.Open strsql, conn, adOpenStatic, adLockPessimistic
                     For j = 1 To rs.RecordCount
                     Key = "t" & rs.Fields("id")
                     Set mNode2 = mNodes.Add(mNode1.Index, tvwChild, Key, rs.Fields("mc"), 7, 7)
                     rs.MoveNext
                     Next
                    .MoveNext
                Next
            .Close
    End WithSet rstNodes = Nothing
    On Error GoTo 0
    End Sub
    http://expert.csdn.net/Expert/topic/1699/1699441.xml?temp=.2040674