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


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

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

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


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

以下是引用mr725在2010-3-24 20:04:00的发言:
在狐爸的例子中发现一个问题:  有重复行时》》》 报错了~~     怎么排除重复行呢? 

我测试了一下,是的会报错。让老六改进改进吧。


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


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

Dim nd As WinForm.TreeNode
Dim Names As List(Of String) = DataTables("表A").GetUniqueValues("类别 Is not Null", "类别")
For Each Name As String In Names
    Dim Path As String = Name
    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 = Forms("窗口1").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 20:51:44编辑过]

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


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

改好啦,谢C版.


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


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

C版 :  增加这样两条记录目录树没有显示:??: 



图片点击可在新窗口打开查看此主题相关图片如下:未命名2.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2010-3-24 23:50:43编辑过]

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


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

加上这样两条也会报错:

其他应付款\老六
其他应付款\老六六


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


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

以下是引用mr725在2010-3-24 23:10:00的发言:

加上这样两条也会报错:

其他应付款\老六
其他应付款\老六六


论坛屏蔽,下面的“分隔符”三字用"\"代替:


Dim nd As WinForm.TreeNode
Dim Names As List(Of String) = DataTables("表A").GetUniqueValues("类别 Is not Null", "类别")
For Each Name As String In Names
    Dim Path As String = Name
    Dim Parts() As String = Path.Split("-:special:1:-)
    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 = Forms("窗口1").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-25 0:09:52编辑过]

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


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

以下是引用狐狸爸爸在2010-3-25 0:02:00的发言:
论坛屏蔽,下面的“分隔符”三字用"\"代替:

Dim nd As WinForm.TreeNode
Dim Names As List(Of String) = DataTables("表A").GetUniqueValues("类别 Is not Null", "类别")
For Each Name As String In Names
    Dim Path As String = Name
    Dim Parts() As String = Path.Split("-:special:1:-)
    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 = Forms("窗口1").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-25 0:09:52编辑过]

您真的强大啊~     ok

另外: GetUniqueValues 如能像 GetComboListString 按指定列排序就完美了  ^_^   ...要不遗憾之````


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


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

 GetComboListString是可以排序的,GetUniqueValues不行。

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


加好友 发短信
等级:五尾狐 帖子:1074 积分:9872 威望:0 精华:0 注册:2008/9/2 11:34:00
  发帖心情 Post By:2010/3/25 9:47:00 [只看该作者]

以下是引用狐狸爸爸在2010-3-24 0:22:00的发言:
 下载信息  [文件大小:20.4 KB  下载次数:28]
图片点击可在新窗口打开查看点击浏览该文件:管理项目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编辑过]

收藏


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