100分,高手请进,关于TreeView的无级子类的实现!在线等待.......

oldjackyone 2003-07-03 09:36:21
请问我如何利用TreeView控件来实现无限子类,

到了二级子类我就不知道怎么办了?请各位帮帮忙,小弟先行谢过...

For I = 0 To DataTable.Rows.Count - 1
TreeNodes.Nodes.Add(Trim(DataTable.Rows(I).Item(2)))'根目录

Sql = "select ID,Node_Number,Node_Title from Nodes where Node_Number=" & DataTable.Rows(I).Item(0)

DA.SelectCommand = New SqlCommand(Sql, DataBase.SqlConnection)
DA.Fill(DataSet, "Nodes" & I)

For J = 0 To DataSet.Tables("Nodes" & I).Rows.Count - 1

TreeNodes.Nodes.Item(I).Nodes.Add(Trim(DataSet.Tables("Nodes" & I).Rows(J).Item(2)))'子目录
Next

Next

不知道如何解决,,总不能用手工来添加For .....Next ....来形成吧.?

该使用何种方法可以解决,请高手们指点.....或者有更好的办法请留下你们的意见.

加分感谢各位....


...全文
42 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ChenHaiHua 2003-07-03
  • 打赏
  • 举报
回复
这是我以前写的代码,倾情奉献啦!数据结构跟你的类似,你自己参考我的代码研究一下吧
'--------------------------------------------------
' 函数:在树型控件中显示权限(菜单)
' 参数: TreeNode :根节点
' ParantID :父节点ID
' dsData :数据集
' PageUrlPath :URL路径
' Flag :标志(1:主界面调用;0:权限设置模块调用)
' 返回:
'--------------------------------------------------
Public Shared Sub InitTree(ByVal TreeNode As TreeNodeCollection, ByVal ParantID As String, ByVal dsData As DataSet, ByVal PageUrlPath As String, ByVal Flag As Short)
Dim strPageUrlPath As String = PageUrlPath
Dim strTableName As String
Dim strFieldTypeID As String
Dim strFieldID As String
Dim strFieldPurview As String
'赋表名及字段名的值
If Flag = 1 Then '主界面调用
strTableName = wsGroupPurview.dsUserPurview.TABLE_NAME
strFieldTypeID = wsGroupPurview.dsUserPurview.FIELD_PURVIEWTYPEID
strFieldID = wsGroupPurview.dsUserPurview.FIELD_PURVIEWID
strFieldPurview = wsGroupPurview.dsUserPurview.FIELD_PURVIEW
Else '权限设置模块调用
strTableName = wsPurview.TABLE_NAME
strFieldTypeID = wsPurview.FIELD_TYPEID
strFieldID = wsPurview.FIELD_ID
strFieldPurview = wsPurview.FIELD_PURVIEW
End If
Dim dvData As New DataView()
dvData.Table = dsData.Tables(strTableName)
dvData.RowFilter = strFieldTypeID + "='" + ParantID + "'"

Dim mydv As DataRowView
Dim tmpNode As TreeNode
For Each mydv In dvData
tmpNode = New TreeNode()
tmpNode.ID = mydv(strFieldID).ToString
tmpNode.Text = mydv(strFieldPurview).ToString
tmpNode.ImageUrl = strPageUrlPath & "/images/treeimages/BOOK.GIF"
tmpNode.ExpandedImageUrl = strPageUrlPath & "/images/treeimages/BOOKOPEN.GIF"
'tmpNode.Expanded = True
If Flag = 1 Then
If mydv(wsGroupPurview.dsUserPurview.FIELD_URL).ToString <> "" Then
tmpNode.NavigateUrl = strPageUrlPath & mydv(wsGroupPurview.dsUserPurview.FIELD_URL).ToString
tmpNode.Target = "main"
End If
End If
TreeNode.Add(tmpNode)
InitTree(tmpNode.Nodes, tmpNode.ID, dsData, strPageUrlPath, Flag)
Next
End Sub
oldjackyone 2003-07-03
  • 打赏
  • 举报
回复
ID Node_Number Node_Txt
1 0 父类1
2 0 父类2
3 1 子类1(父类1)
4 1 子类2(父类1)
5 2 子类1(父类2)
6 2 子类2(父类2)
7 3 孙类1(子类1-父类1 下面的孙类)

数据库结构是这样的.

请各位帮帮忙...谢谢.
oldjackyone 2003-07-03
  • 打赏
  • 举报
回复
麻烦一下,能不能给个例子,俺脑子天生笨....

想了好长时间...也没有想到什么办法可以解决?

maskzha 2003-07-03
  • 打赏
  • 举报
回复
数据库结构 ->yes


xhan2000 2003-07-03
  • 打赏
  • 举报
回复
数据库结构

id,parentid

使用递归算法
oldjackyone 2003-07-03
  • 打赏
  • 举报
回复
不是不怎么明白楼上那位的意思,能不能再说清楚一点。。。

我实在笨。。

16,718

社区成员

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

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