.net winform 不用递归快速显示树型

xixihaha_2011_098 2008-03-23 01:40:53
.net winform 不用递归,从数据库,读取数据,生成树型,

有什么方法吗?用我递归,每次都要重新获取DATASET.速度好慢啊
...全文
142 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
jn_rice 2008-03-23
  • 打赏
  • 举报
回复
真的不错啊,正在学习,回头试试楼主的方法
xixihaha_2011_098 2008-03-23
  • 打赏
  • 举报
回复
On Error Resume Next
Dim Node As TreeNode
Dim SImg As Integer
Dim IImg As Integer
Dim Row As DataRow
For Each Row In Ds.Tables(0).Select("父节点编号 ='" & ParentID & "'")
If Row("文件类型") = "目录" Then
SImg = 0
IImg = 0
Else
SImg = 2
IImg = 1
End If
If pNode Is Nothing Then
Node = TreeView1.Nodes.Add(Row("编号").ToString, Row("节点名称").ToString, IImg, SImg)
AddTree(Row("编号"), Node)
Else
Node = pNode.Nodes.Add(Row("编号").ToString(), Row("节点名称").ToString(), IImg, SImg)
AddTree(Row("编号"), Node)
End If
Next
If Err.Number <> 0 Then
MessageBox.Show(Err.Description)
Exit Sub
End If
已经解决了,谢谢,1楼,2楼的,兄弟,

我把 DataView直接抛弃,用DATASET select 检索,没想到速度,提高,十倍啊,
xixihaha_2011_098 2008-03-23
  • 打赏
  • 举报
回复
我觉得,应该是
Dim dvTree As New DataView(Ds.Tables(0))
dvTree.RowFilter = "父节点编号 ='" & ParentID & "'"
造成的,不知道有什么好的解决办法,
xixihaha_2011_098 2008-03-23
  • 打赏
  • 举报
回复
上面那段发错了,不好意思,
Public Sub AddTree(ByVal ParentID As String, ByVal pNode As TreeNode) '加载树形
On Error Resume Next
Dim Node As TreeNode
Dim SImg As Integer
Dim IImg As Integer
Dim dvTree As New DataView(Ds.Tables(0))
dvTree.RowFilter = "父节点编号 ='" & ParentID & "'"
Dim Row As DataRowView
For Each Row In dvTree
If Row("文件类型") = "目录" Then
SImg = 0
IImg = 0
Else
SImg = 2
IImg = 1
End If
If pNode Is Nothing Then
Node = TreeView1.Nodes.Add(Row("编号").ToString, Row("节点名称").ToString, IImg, SImg)
AddTree(Row("编号"), Node)
Else
Node = pNode.Nodes.Add(Row("编号").ToString(), Row("节点名称").ToString(), IImg, SImg)
AddTree(Row("编号"), Node)
End If
Next
If Err.Number <> 0 Then
MessageBox.Show(Err.Description)
Exit Sub
End If
End Sub
xixihaha_2011_098 2008-03-23
  • 打赏
  • 举报
回复
On Error Resume Next
Dim Node As TreeNode = Nothing
Dim PTag As String = "a"
Dim dvTree As New DataView(Ds.Tables(0))
dvTree.Sort = ("编号 Asc")
Dim Row As DataRowView
For Each Row In dvTree
If Row("父节点编号").ToString.Trim = PTag.Trim Then
Node = Node.Nodes.Add(Row("编号").ToString.Trim, Row("节点名称").ToString.Trim)
Else
Node = TreeView1.Nodes.Add(Row("编号").ToString.Trim, Row("节点名称").ToString.Trim)
End If
If TreeView1.Nodes.Count = 0 Then
Node = TreeView1.Nodes.Add(Row("编号").ToString.Trim, Row("节点名称").ToString.Trim)
End If
PTag = Row("编号").ToString.Trim
Next
If Err.Number <> 0 Then
MessageBox.Show(Err.Description)
Exit Sub
End If


这是递归的代码,
a854468521 2008-03-23
  • 打赏
  • 举报
回复
将上次得到的完整树序列化,下次用的时候加载就快多了.
qiu5208 2008-03-23
  • 打赏
  • 举报
回复
没有比递归更快的方法了。
你对你的递归进行优化。

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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