以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  如何实现根据单列内容生成目录树进行筛选或加载?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=174395)

--  作者:lgz518
--  发布时间: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"),  "类别")






--  作者:有点蓝
--  发布时间: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
--  发布时间:2022/1/13 16:12:00
--  
老师,问题一和问题二分别是用二种方法:

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

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

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

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





--  作者:有点蓝
--  发布时间: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编辑过]