请教一建立树问题

yzd 2003-11-06 11:21:06
我想建立“部门”树,结构如下:
ID 部门名称 级别 上级部门
1 sdfsd 1 0
2 asdasdas 1 0
3 出纳室 3 2
5 言 1 0
6 部门名称 2 5

其中级别不起作用,只是在显示时,与名称一起显示如“sdfsd1".

谢谢!
...全文
91 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
cloudtarget 2004-02-07
  • 打赏
  • 举报
回复
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
cloudtarget 2004-02-07
  • 打赏
  • 举报
回复
http://www.microsoft.com/china/community/Columns/Lihonggen/1.mspx
boydgmx 2003-11-07
  • 打赏
  • 举报
回复
首先假设你已经将这批数据记录从数据库中读取出来,存放在一个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
wenwenwen112 2003-11-06
  • 打赏
  • 举报
回复
应该是顺着上级部门的序列依次增加结点。
nofound007 2003-11-06
  • 打赏
  • 举报
回复
直接使用listview即可啊!1
大鸟吴 2003-11-06
  • 打赏
  • 举报
回复
没看懂你要干吗,说明白点阿
yoki 2003-11-06
  • 打赏
  • 举报
回复
啥意思?
lubberland 2003-11-06
  • 打赏
  • 举报
回复
下面带码可以,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
yzd 2003-11-06
  • 打赏
  • 举报
回复
我是想用一循环语句建立树,上级部门为o 的是根节点,然后上级部门为2的就应在ID号为2 的节点下如 出纳室 的 上级部门为2,则应在asdasdas下的子节, 如部门名称 的上级部门为5 ,则他应在“言”下的了节点。
yb438 2003-11-06
  • 打赏
  • 举报
回复
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

7,789

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧