我想建立“部门”树,结构如下:
ID          部门名称                      级别   上级部门
1           sdfsd                         1         0      
2           asdasdas                      1         0      
3           出纳室                        3         2      
5           言                            1         0      
6           部门名称                      2         5      其中级别不起作用,只是在显示时,与名称一起显示如“sdfsd1".谢谢!

解决方案 »

  1.   

    Set ndd = TreeView1.Nodes.Add(, , "root", "部门列表")
    ndd.Expanded = True
    TreeView1.Nodes.Add "root", tvwChild, sdfsd, sdfsd1
    TreeView1.Nodes.Add "root", tvwChild, asdasdas, asdasdas1
    TreeView1.Nodes.Add "root", tvwChild, sdfsd, 言1
    TreeView1.Nodes.Add "asdasdas", tvwChild, 出纳室, 出纳室2
      

  2.   

    我是想用一循环语句建立树,上级部门为o 的是根节点,然后上级部门为2的就应在ID号为2 的节点下如 出纳室 的 上级部门为2,则应在asdasdas下的子节,    如部门名称 的上级部门为5 ,则他应在“言”下的了节点。
      

  3.   

    下面带码可以,1是得出头节点,2是循环得下级节点,
    Public Sub LoadModNodes(ByRef tvw As TreeView, strNode_Head As String)  Dim oCol As New cCollection
      Dim oSysMgt As New SysMgt
      Dim i As Integer
      Dim oMod  As cSysModule
      '先加入没有上级部门的部门
      Set oCol = oSysMgt.getSonModOfMod("0")
      For i = 1 To getCollectionCount(oCol)
            Set oMod = oCol.Item(i)
            ObjToTree tvw, strNode_Head, strNode_Head & oMod.Mod_No, oMod.Name, "MOD", False
            LoadSubModNodes tvw, oMod.Mod_No, strNode_Head
      Next i
    End Sub
    Private Sub LoadSubModNodes(ByRef tvw As TreeView, strMod_no As String, strNode_Head As String)
      Dim Nd1 As Node
      Dim oCol As cCollection
      Dim oSysMgt As New SysMgt
      Dim i As Integer
      Dim oMod As cSysModule
      Dim iMax As Integer
      Set oCol = New cCollection
      Set oCol = oSysMgt.getSonModOfMod(strMod_no)
      For i = 1 To getCollectionCount(oCol)
            Set oMod = oCol.Item(i)
            ObjToTree tvw, strNode_Head & strMod_no, strNode_Head & oMod.Mod_No, oMod.Name, "MOD", False
            LoadSubModNodes tvw, oMod.Mod_No, strNode_Head
      Next i
    End Sub
      

  4.   

    首先假设你已经将这批数据记录从数据库中读取出来,存放在一个RecordSet对象rs中,
    则如下遍历rs:
    while(not rs.eof)
       if rs!上级部门=0 then
           '添加根节点  
           theTree.Nodes.Add(,, rs!ID,rs!部门名称 & rs!级别)
       else
           '添加子节点
           theTree.Nodes.Add(rs!上级部门, tvwChild, rs!ID,rs!部门名称 & rs!级别)
       end if
    wend
      

  5.   

    http://www.microsoft.com/china/community/Columns/Lihonggen/1.mspx
      

  6.   

    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