Foxtable(狐表)用户栏目专家坐堂 → 如何实现根据单列内容生成目录树进行筛选或加载?


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

主题:如何实现根据单列内容生成目录树进行筛选或加载?

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


加好友 发短信
等级:六尾狐 帖子:1271 积分:8670 威望:0 精华:0 注册:2019/6/13 9:57:00
如何实现根据单列内容生成目录树进行筛选或加载?  发帖心情 Post By:2022/1/13 14:21:00 [只看该作者]

根据单列内容生成目录树



例如有下表中的数据:

图片点击可在新窗口打开查看

在窗口中加入一个目录树(TreeView),再加入一个按钮(Button),按钮的Click事件代码设置为:

Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1")
tr.CreateTree(
"表A","类别"
)

单击此按钮,即可生成下图所示的目录数:

图片点击可在新窗口打开查看


问题一:能实现目录,但加下代码,未能实现按生成目录树进行筛选,如何解决?


Dim Filter As String

Dim dr As DataRow = e.Node.DataRow '获取生成此节点的行

If e.Node.Text <> "显示所有行" Then

    Select Case e.Node.Level

        Case 0

            Filter = "[类别] = '" & dr("类别") & "'"

        'Case 1

            'Filter = "[产品] = '" & dr("产品") & "' And [客户] = '" & dr("客户") & "'"

        'Case 2

            'Filter = "[产品] = '" & dr("产品") & "' And [客户] = '" & dr("客户") & "' And [雇员] = '" & dr("雇员") & "'"

    End Select

End If

Tables("表A").Filter = Filter



问题二,用窗口的插入筛选树,没有实现目录分级筛选,如何解决?

插入筛选树

从Foxtable 2022版开始,我们可以直接在窗口中插入内置的各种功能树。

我们先学习在窗口插入内置筛选树,关于筛选树的使用,可以参考:筛选树

示例一

1、打开CaseStudy目录下的示例文件: 基本功能演示.Table

2、新建一个窗口,在窗口中插入一个FilterTree控件。

3、在窗口的AfterLoad事件中加上代码:

Dim trv As WinForm.FilterTree = e.Form.Controls("FilterTree1")
trv
.Build(Tables("表A"),  "类别")






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


加好友 发短信
等级:超级版主 帖子:111393 积分:567029 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/1/13 15:21:00 [只看该作者]

首先代码不能生搬硬套,不要把A功能的部分代码硬套套到B功能上,测试错误就认为A功能的代码也是错误的。帮助提供了大量的代码实例,请认真理解帮助的使用环境和说明再用。而不是随意找2段代码组合到一起就能使用,这只能是断章取义。问题一的两段帮助的代码,在帮助里使用的表结构完全不一样的,组合到一起当然实现不了任何东西

其次要使用一个新的功能,建议还是把新功能的前前后后的帮助说明都过一遍,了解他们的区别在使用,不然还是陷入断章取义。上面问题二使用的代码是用于插入内置的筛选树(http://www.foxtable.com/webhelp/topics/3369.htm),这个是没有分级功能的。要使用分级功能应该使用层级筛选树:http://www.foxtable.com/webhelp/topics/3374.htm


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


加好友 发短信
等级:六尾狐 帖子:1271 积分:8670 威望:0 精华:0 注册:2019/6/13 9:57:00
  发帖心情 Post By:2022/1/13 16:12:00 [只看该作者]

老师,问题一和问题二分别是用二种方法:

我们在目录树是主要作用是与表做筛选或加载
问题一:下面是根据内容生成目录,那如何它与与表做筛选或加载,如果无法实现与与表做筛选或加载,只是生成目录树,那没任何作用。

下面代码:      如何实现与表做筛选或加载?选择节点实现筛选

在窗口中加入一个目录树(TreeView),再加入一个按钮(Button),按钮的Click事件代码设置为:

Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1")
tr.CreateTree(
"表A","类别"
)





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


加好友 发短信
等级:超级版主 帖子:111393 积分:567029 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/1/13 16:45:00 [只看该作者]

不是不能,而是乱用其它帮助的方法,又不会变通


If e.Node.Text <> "显示所有行" Then

    Tables("表A").Filter = "[类别] like '" & e.node.FullPath & "%'"

end if

[此贴子已经被作者于2022/1/13 16:46:06编辑过]

 回到顶部