Foxtable(狐表)用户栏目专家坐堂 → 关于treeview的难题


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

主题:关于treeview的难题

帅哥哟,离线,有人找我吗?
唐尸三摆手
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:928 积分:7769 威望:0 精华:13 注册:2008/9/1 11:58:00
关于treeview的难题  发帖心情 Post By:2010/12/5 [只看该作者]

有这样一个物料表

 

父编码  子编码

a          a1

b          b1

c           c1

a1         aa1

b1         bb1

c1          cc1

aa1        d1

 

 

请教如何能做成下面结构,在窗口的目录树中展现(treeview)

 

 

-a

   - a1

       -aa1

           -d1

-b

   -b1

      -bb1

-c

  -c1

     -cc1


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


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

开动脑筋,不难的。


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


加好友 发短信
等级:四尾狐 帖子:928 积分:7769 威望:0 精华:13 注册:2008/9/1 11:58:00
  发帖心情 Post By:2010/12/5 0:06:00 [只看该作者]

提供下思路好吗,这两天有点一根筋了

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


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

要是这样的规则:

父码      子码

a          a1

b          b1

c           c1

a1         aa1

b1         bb1

c1          cc1

aa1        aaa1    【 你原来时 d1 】

 

可以这样:

 

Dim s,s1,s2,s3 As String
s = DataTables("表A").GetComboListString("父码")
s1 = s & "|" & DataTables("表A").GetComboListString("子码")
s2 = ""

For i0 As Integer = 0 To s1.split("|").length-1
    If s2.contains(s1.split("|")(i0)) = False
        s2 = s2 & s1.split("|")(i0) & "|"
    End If
Next

Dim tr As WinForm.TreeView = Forms("目录树").Controls("TreeView1")
Dim nd0,nd1,nd2,nd3,nd4 As WinForm.TreeNode
tr.Nodes.Clear   '清空原来的节点::::::::::

For i As Integer = 0 To s2.split("|").length-1
    s3 = s2.split("|")(i).length
    Select Case s3
        Case 1
            nd0 = tr.Nodes.Add(Rand.NextString(10),s2.split("|")(i))
            output.show(nd0.text)
        Case 2
            If s2.split("|")(i).contains(nd0.text)
                nd1 = nd0.Nodes.Add(Rand.NextString(10),s2.split("|")(i))
            End If
        Case 3
            If s2.split("|")(i).contains(nd1.text)
                nd2 = nd1.Nodes.Add(Rand.NextString(10),s2.split("|")(i))
            End If
        Case 4
            If s2.split("|")(i).contains(nd2.text)
                nd3 = nd2.Nodes.Add(Rand.NextString(10),s2.split("|")(i))
            End If
    End Select
Next

 

 结果这样对吗:

 


图片点击可在新窗口打开查看此主题相关图片如下:treeview.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2010-12-5 2:40:29编辑过]

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


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

呵呵,我也来一个,我这个对于名称没有任何要求的:

 

Dim lst1 As List(of String) = DataTables("表A").GetUniqueValues("","第一列")
Dim lst2 As List(of String) = DataTables("表A").GetUniqueValues("","第二列")
Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim tnd As WinForm.TreeNode
Dim dr As DataRow
trv.Nodes.Clear()
For Each Val As String In Lst1
    If lst2.Contains(val) = False Then
        tnd = trv.Nodes.Add(val,val)
        Do
            dr = DataTables("表A").Find("第一列 = '" & tnd.Name & "'")
            If dr Is Nothing Then
                Exit Do
            Else
                tnd = tnd.Nodes.Add(dr("第二列"),dr("第二列"))
            End If
        Loop
    End If
Next

 

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目15.table


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


加好友 发短信
等级:三尾狐 帖子:787 积分:6349 威望:0 精华:0 注册:2008/9/1 8:26:00
  发帖心情 Post By:2010/12/5 10:57:00 [只看该作者]

收藏


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


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

以下是引用易服在2010-12-5 10:57:00的发言:

收藏

 

呵呵,不用收藏的,关键是把他看明白。


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


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

呵呵,老大就是老大,您以前有过类似的代码,当时,我是没有看明白,现在再看,有点意思了,呵呵。。。

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


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

另外,4楼代码在生成目录树前,要对 s2 进行一下排序,否则会乱了。。。。 呵呵


 回到顶部
帅哥哟,离线,有人找我吗?
唐尸三摆手
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:928 积分:7769 威望:0 精华:13 注册:2008/9/1 11:58:00
  发帖心情 Post By:2010/12/6 9:35:00 [只看该作者]

以下是引用狐狸爸爸在2010-12-5 7:41:00的发言:

呵呵,我也来一个,我这个对于名称没有任何要求的:

 

Dim lst1 As List(of String) = DataTables("表A").GetUniqueValues("","第一列")
Dim lst2 As List(of String) = DataTables("表A").GetUniqueValues("","第二列")
Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim tnd As WinForm.TreeNode
Dim dr As DataRow
trv.Nodes.Clear()
For Each Val As String In Lst1
    If lst2.Contains(val) = False Then
        tnd = trv.Nodes.Add(val,val)
        Do
            dr = DataTables("表A").Find("第一列 = '" & tnd.Name & "'")
            If dr Is Nothing Then
                Exit Do
            Else
                tnd = tnd.Nodes.Add(dr("第二列"),dr("第二列"))
            End If
        Loop
    End If
Next

 

 

 下载信息  [文件大小:296.0 KB  下载次数:14]
图片点击可在新窗口打开查看点击浏览该文件:管理项目15.table
 
 
老大,附件的文件增加一行

aa1        d2

就不行了的
 

[此贴子已经被作者于2010-12-6 9:35:38编辑过]

 回到顶部
总数 48 1 2 3 4 5 下一页