Foxtable(狐表)用户栏目专家坐堂 → [求助]如何按列内容生成目录树?


  共有18083人关注过本帖树形打印复制链接

主题:[求助]如何按列内容生成目录树?

帅哥哟,离线,有人找我吗?
ylm
  1楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:312 积分:3190 威望:0 精华:6 注册:2008/8/31 19:42:00
[求助]如何按列内容生成目录树?  发帖心情 Post By:2010/3/23 20:38:00 [只看该作者]

[求助]表中类别只有一列(如图1),如何按类别列内容生成图2的目录树?
图片点击可在新窗口打开查看此主题相关图片如下:b.gif
图片点击可在新窗口打开查看

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

 回到顶部
帅哥哟,离线,有人找我吗?
程兴刚
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:7235 积分:40550 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2010/3/23 22:01:00 [只看该作者]

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

 回到顶部
帅哥哟,离线,有人找我吗?
mr725
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2010/3/23 23:02:00 [只看该作者]

遍历行,再遍历单元格.split("\") 后,  用 .Nodes.Add 应该可以完成......    猜测的~  

 回到顶部
帅哥哟,离线,有人找我吗?
ylm
  4楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:312 积分:3190 威望:0 精华:6 注册:2008/8/31 19:42:00
  发帖心情 Post By:2010/3/23 23:15:00 [只看该作者]

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

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


 回到顶部
帅哥哟,离线,有人找我吗?
ylm
  5楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:312 积分:3190 威望:0 精华:6 注册:2008/8/31 19:42:00
  发帖心情 Post By:2010/3/23 23:17:00 [只看该作者]

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

不会弄。


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251048 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By: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
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33945 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2010/3/24 0:24:00 [只看该作者]

先顶再说。

 回到顶部
帅哥哟,离线,有人找我吗?
mr725
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By: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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251048 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/3/24 1:01:00 [只看该作者]

 第一次传的有问题,已经重新传了

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251048 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/3/24 9:57:00 [只看该作者]

大家可能没有意识到,这个例子很有用,我顶一下。

 回到顶部
总数 29 1 2 3 下一页