Foxtable(狐表)用户栏目专家坐堂 → 如何实现无限级别的过滤树


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

主题:如何实现无限级别的过滤树

帅哥哟,离线,有人找我吗?
不可思议的虫
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:32 积分:589 威望:0 精华:0 注册:2014/6/20 14:51:00
如何实现无限级别的过滤树  发帖心情 Post By:2014/7/17 13:44:00 [只看该作者]

如题

例如库结构

ID    父ID   分类名称
1     NULL  大类
2     1       中类1
3     1       中类2
4     2       小类1
5     3       小类2

形成树的样子是

大类
    中类1
        小类1
    中类2
        小类2

是否有示例或者代码可供参考?谢谢

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/7/17 14:04:00 [只看该作者]


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


加好友 发短信
等级:三尾狐 帖子:668 积分:5053 威望:0 精华:0 注册:2011/10/22 13:37:00
  发帖心情 Post By:2014/7/17 16:45:00 [只看该作者]

窗口AFTERLOAD事件:

e.Form.Controls("TreeView3").BuildTree("出库", "销售人员|客户单位|型号")

e.Form.Controls("TreeView3").BuildTree("出库", "销售人员|客户单位|型号")

 

筛选树代码:

Dim mls As String() = {"供应商","产品名称","型号"}  '指定生成目录树的各列

Dim kh As String() = {"'","'","'"}  '指定将各列的值括起来的符号,这里都是字符型,所以都是单引号

Dim cs As WinForm.TreeView = e.Sender

Dim sx As String

Dim jd As WinForm.TreeNode

For Each jd In e.node.allNodes '清除子节点的选中标记

    jd.Checked = False

Next

jd = e.Node.ParentNode

Do While jd IsNot Nothing '清除父节点的选中标记

    jd.Checked = False

    jd = jd.ParentNode

Loop

For Each jd In cs.AllNodes

    If jd.Checked  Then

        Dim xjd() As String = jd.FullPath.Split("\")

        Dim val As String = ""

        For i As Integer = 0 To xjd.length - 1

            If val > "" Then

                val = val & " And "

            End If

            val = val & mls(i) & " = " & kh(i) & xjd(i) & kh(i)

        Next

        If sx > "" Then

            sx = sx & " Or (" & val & ")"

        Else

            sx = val

        End If

    End If

Next

Tables("出入库").Filter  = sx

此代码通用性很强,对照你的系统修改表名、列名即可。

注;FOXTABLE帮助中也有此段代码,我照搬而已。


 回到顶部