以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]如何按列内容生成目录树?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=6343)

--  作者:ylm
--  发布时间:2010/3/23 20:38:00
--  [求助]如何按列内容生成目录树?
[求助]表中类别只有一列(如图1),如何按类别列内容生成图2的目录树?
图片点击可在新窗口打开查看此主题相关图片如下:b.gif
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:a.gif
图片点击可在新窗口打开查看

--  作者:程兴刚
--  发布时间:2010/3/23 22:01:00
--  
如果您把这样一列的数据分成多级类别(多列),会非常简单,否则,很麻烦!
[此贴子已经被作者于2010-3-23 22:01:26编辑过]

--  作者:mr725
--  发布时间:2010/3/23 23:02:00
--  
遍历行,再遍历单元格.split("\\") 后,  用 .Nodes.Add 应该可以完成......    猜测的~  
--  作者:ylm
--  发布时间:2010/3/23 23:15:00
--  
以下是引用程兴刚在2010-3-23 22:01:00的发言:
如果您把这样一列的数据分成多级类别(多列),会非常简单,否则,很麻烦!
[此贴子已经被作者于2010-3-23 22:01:26编辑过]

恩,确实是这样。实在不行的话,也只好这样子。


--  作者:ylm
--  发布时间:2010/3/23 23:17:00
--  
以下是引用mr725在2010-3-23 23:02:00的发言:
遍历行,再遍历单元格.split("\\") 后,  用 .Nodes.Add 应该可以完成......    猜测的~  

不会弄。


--  作者:狐狸爸爸
--  发布时间:2010/3/24 0:22:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目102.rar



Dim nd As WinForm.TreeNode
For Each dr As DataRow In DataTables("表A").Select("","类别")
    Dim Path As String = dr("类别")
    Dim Parts() As String = Path.Split("\\")
    Dim Start As Integer
    If nd IsNot Nothing Then
        Do
            If Path.StartsWith(nd.FullPath) Then
                Start = nd.Level + 1
                nd = nd.Nodes.Add(Parts(Start),Parts(start))
                Start = nd.Level + 1
                Exit do
            Else
                nd = nd.ParentNode
                If nd Is Nothing Then
                    Exit do
                End If
            End If
        Loop
    End If
    If nd Is Nothing Then
        nd = e.Form.Controls("TreeView1").Nodes.Add(Parts(0),Parts(0))
        start = 1
    End If
    For i As Integer = Start To Parts.Length - 1
        nd = nd.Nodes.Add(Parts(i),Parts(i))
    Next
Next
[此贴子已经被作者于2010-3-24 1:00:34编辑过]

--  作者:czy
--  发布时间:2010/3/24 0:24:00
--  
先顶再说。
--  作者:mr725
--  发布时间:2010/3/24 0:39:00
--  
这样不知满足您:
Dim tr As WinForm.TreeView = Forms("mls").Controls("TreeView1")
Dim nd As WinForm.TreeNode
Dim fs as String
tr.Nodes.Clear 
For Each dr as DataRow in datatables("表名").Select("","类别")
    If dr("类别") <> "" Then
        nd = Tr.Nodes.Add("Root1",dr("类别").split("\\")(0))
        fs = dr("类别").split("-:special:1:-).length
        for n as integer = 1 to fs-1
            nd.Nodes.Add("Sub" & n,dr("类别").split("-:special:1:-)(n))
        next
    End If
Next
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:如何按列内容生成目录树.rar


不如狐爸的强!~
[此贴子已经被作者于2010-3-24 0:59:11编辑过]

--  作者:狐狸爸爸
--  发布时间:2010/3/24 1:01:00
--  
 第一次传的有问题,已经重新传了
--  作者:狐狸爸爸
--  发布时间:2010/3/24 9:57:00
--  
大家可能没有意识到,这个例子很有用,我顶一下。