下面带码可以,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
首先假设你已经将这批数据记录从数据库中读取出来,存放在一个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
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
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
则如下遍历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
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