Foxtable(狐表)用户栏目专家坐堂 → [求助]自定义目录树菜单设计中碰到的拦路虎


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

主题:[求助]自定义目录树菜单设计中碰到的拦路虎

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


加好友 发短信
等级:小狐 帖子:358 积分:3193 威望:0 精华:2 注册:2012/1/17 10:55:00
[求助]自定义目录树菜单设计中碰到的拦路虎  发帖心情 Post By:2012/5/21 9:42:00 [显示全部帖子]

现有 表结构如下

 

文件

 

序号() ----> 字符型(16)

文件名称() ----> 字符型(60)

类名() ----> 字符型(16)

一类编号() ----> 字符型(16)

一类名称() ----> 字符型(60)

二类名称() ----> 字符型(60)

二类编号() ----> 字符型(16)

三类名称() ----> 字符型(60)

三类编号() ----> 字符型(16)

 

类目

 

类名() ----> 字符型(16)

 

一类

 

一类编号() ----> 字符型(16)

一类名称() ----> 字符型(16)

类名() ----> 字符型(60)

 

二类

 

一类编号() ----> 字符型(16)

一类名称() ----> 字符型(60)

二类编号() ----> 字符型(16)

二类名称() ----> 字符型(60)

类名() ----> 字符型(16)

 

三类

 

一类编号() ----> 字符型(16)

一类名称() ----> 字符型(60)

二类编号() ----> 字符型(16)

二类名称() ----> 字符型(60)

三类编号() ----> 字符型(16)

三类名称() ----> 字符型(60)

类名() ----> 字符型(16)

 

我想知道狐表是否可实现这样的功能,按照 类目表 一类表 二类表 三类表 的层级关系,1.生成一个目录树,2.在双击树形节点的时候筛选出文件表中对应的数据

具体怎么实现?主要是那个生成目录树的代码,麻烦各位高手帮忙了。 


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


加好友 发短信
等级:小狐 帖子:358 积分:3193 威望:0 精华:2 注册:2012/1/17 10:55:00
  发帖心情 Post By:2012/5/21 9:44:00 [显示全部帖子]

备注下,因为实际需求的需要,只能通过这种分表的方式建立多级目录,所以不要推荐我重新设计分类模式

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


加好友 发短信
等级:小狐 帖子:358 积分:3193 威望:0 精华:2 注册:2012/1/17 10:55:00
  发帖心情 Post By:2012/5/21 10:06:00 [显示全部帖子]

就上面的四个分类表,从里面调用数据

建立一个treeview

要求实现效果:

类名

     一类名称

     一类名称

           二类名称

                 三类名称

     一类名称

           二类名称

           二类名称

类名

 

这样的形式


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


加好友 发短信
等级:小狐 帖子:358 积分:3193 威望:0 精华:2 注册:2012/1/17 10:55:00
  发帖心情 Post By:2012/5/21 10:12:00 [显示全部帖子]


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

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


加好友 发短信
等级:小狐 帖子:358 积分:3193 威望:0 精华:2 注册:2012/1/17 10:55:00
  发帖心情 Post By:2012/5/21 10:32:00 [显示全部帖子]

额的神啊,带阪崎肠杆菌你敢要,我可不敢送。。。

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


加好友 发短信
等级:小狐 帖子:358 积分:3193 威望:0 精华:2 注册:2012/1/17 10:55:00
  发帖心情 Post By:2012/5/21 10:50:00 [显示全部帖子]

程版啊,我知道根据单列更简单些,也没有限制。但是实际需求只能这么设计啊。

 

不知道你看明白我上面的描述没有,我自己试着写了下,大概就是这样,刚写到一级,代码可能有点不堪入目,但可以执行,希望大家帮我改改

 

Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim nd As WinForm.TreeNode
Dim dt As DataTable = DataTables("类目")
tr.StopRedraw()
tr.Nodes.Clear
For Each dr As DataRow In dt.datarows
        nd = tr.Nodes.Add(dr("类名"),dr("类名"))
        Dim dt1 As DataTable = DataTables("档案一类")
        Dim drs1 As List(of DataRow)
        drs1 = dt1.Select("[类名] = '" & nd.name & "'")
        For Each dr1 As DataRow In drs1
        Dim cd1 As Winform.TreeNode = nd.Nodes.Add(dr1("一类名称"),dr1("一类名称"))
        Next

Next
tr.ResumeRedraw()


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


加好友 发短信
等级:小狐 帖子:358 积分:3193 威望:0 精华:2 注册:2012/1/17 10:55:00
  发帖心情 Post By:2012/5/21 11:12:00 [显示全部帖子]

再下一级不晓得咋个写了

 

Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim nd As WinForm.TreeNode
Dim dt As DataTable = DataTables("类目")
tr.StopRedraw()
tr.Nodes.Clear
For Each dr As DataRow In dt.datarows
        nd = tr.Nodes.Add(dr("类名"),dr("类名"))
        Dim dt1 As DataTable = DataTables("档案一类")
        Dim drs1 As List(of DataRow)
        drs1 = dt1.Select("[类名] = '" & nd.name & "'")
        For Each dr1 As DataRow In drs1
        Dim cd1 As Winform.TreeNode = nd.Nodes.Add(dr1("一类名称"),dr1("一类名称"))
        Next

            Dim dt2 As DataTable = DataTables("档案二类")
            Dim drs2 As List(of DataRow)
            drs2 = dt2.Select("[一类名称] = '" & nd.name & "'")
            For Each dr2 As DataRow In drs2
            Dim cd2 As Winform.TreeNode = nd.Nodes.Add(dr2("二类名称"),dr2("二类名称"))


            Next

Next
tr.ResumeRedraw()

 

貌似不执行


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


加好友 发短信
等级:小狐 帖子:358 积分:3193 威望:0 精华:2 注册:2012/1/17 10:55:00
  发帖心情 Post By:2012/5/21 11:25:00 [显示全部帖子]

二级的似乎解决了,三级中。。。

 

Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim nd As WinForm.TreeNode
Dim dt As DataTable = DataTables("类目")
tr.StopRedraw()
tr.Nodes.Clear
For Each dr As DataRow In dt.datarows
        nd = tr.Nodes.Add(dr("类名"),dr("类名"))
        Dim dt1 As DataTable = DataTables("档案一类")
        Dim drs1 As List(of DataRow)
        drs1 = dt1.Select("[类名] = '" & nd.name & "'")
        For Each dr1 As DataRow In drs1
        Dim cd1 As Winform.TreeNode
        cd1= nd.Nodes.Add(dr1("一类名称"),dr1("一类名称"))


               
            Dim dt2 As DataTable = DataTables("档案二类")
            Dim drs2 As List(of DataRow)
            drs2 = dt2.Select("[一类名称] = '" & cd1.name & "'")
            For Each dr2 As DataRow In drs2
            Dim cd2 As Winform.TreeNode = cd1.Nodes.Add(dr2("二类名称"),dr2("二类名称"))


            Next

 

        Next
           
Next
tr.ResumeRedraw()


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


加好友 发短信
等级:小狐 帖子:358 积分:3193 威望:0 精华:2 注册:2012/1/17 10:55:00
  发帖心情 Post By:2012/5/21 11:38:00 [显示全部帖子]

 

 

程版 你那个 buildtree是针对一个表里的目录生成的。我这里的目录分了四个表。所以只能手动啊。

 

 

 

 

三级的完成了,可以执行,但是有些地方需要修改

Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim nd As WinForm.TreeNode
Dim dt As DataTable = DataTables("类目")
tr.StopRedraw()
tr.Nodes.Clear
For Each dr As DataRow In dt.datarows
        nd = tr.Nodes.Add(dr("类名"),dr("类名"))
        Dim dt1 As DataTable = DataTables("档案一类")
        Dim drs1 As List(of DataRow)
        drs1 = dt1.Select("[类名] = '" & nd.name & "'")   
        For Each dr1 As DataRow In drs1
        Dim cd1 As Winform.TreeNode
        cd1= nd.Nodes.Add(dr1("一类名称"),dr1("一类名称"))               
            Dim dt2 As DataTable = DataTables("档案二类")
            Dim drs2 As List(of DataRow)
            drs2 = dt2.Select("[一类名称] = '" & cd1.name & "'")   这里需要增加个条件:  and  "[类名] = '" & nd.name & " 不晓得咋个写了
            For Each dr2 As DataRow In drs2
            Dim cd2 As Winform.TreeNode = cd1.Nodes.Add(dr2("二类名称"),dr2("二类名称"))
                    Dim dt3 As DataTable = DataTables("档案三类")
                    Dim drs3 As List(of DataRow)
                    drs3 = dt3.Select("[二类名称] = '" & cd2.name & "'")  这里同上
                    For Each dr3 As DataRow In drs3
                    Dim cd3 As Winform.TreeNode = cd2.Nodes.Add(dr3("三类名称"),dr3("三类名称"))
                    Next
             Next
        Next           
Next
tr.ResumeRedraw()


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


加好友 发短信
等级:小狐 帖子:358 积分:3193 威望:0 精华:2 注册:2012/1/17 10:55:00
  发帖心情 Post By:2012/5/21 15:25:00 [显示全部帖子]

已解决 再次感谢yangming的大力支持


 回到顶部
总数 11 1 2 下一页