以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  目录树如何按条件显示数据?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=187583)

--  作者:lin98
--  发布时间:2023/7/28 14:57:00
--  目录树如何按条件显示数据?

1、然后新建一个窗口,窗口中插入一个目录树(TreeView),窗口的AfterLod事件代码设为:

Dim cmd As New SQ-LCommand
Dim
 dt As DataTable
cmd
.CommandText = "SELEC-T DISTINCT 产品,客户 From {订单}"
dt
 = cmd.ExecuteReader()
Dim
 trv As WinForm.TreeView = e.Form.Controls("TreeView1")
trv
.BuildTree(dt,"产品|客户")
trv
.Nodes.Insert("加载所有数据",0)


这样一旦打开窗口,该目录树列出所有的产品和客户。
由于订单表只是加载了部分数据,所以我们不能直接根据订单表来生成目录树,因为订单表的数据不完整,只能用ExecuteReader方法直接从后台提取完整的产品和客户数据。
注意Select语句中,一定要有DISTINCT关键词,这样返回的才是不重复的产品和客户名单,虽然对目录树的生成没有影响,但是会大大降低数据加载量,对于网络环境,这是非常重要的。

2、最后将目录树的NodeMouseDoubleClick事件设为:

Dim Filter As String
If
 e.node.Text = "加载所有数据" Then
    Filter = ""

Else

    Dim dr As DataRow = e.Node.DataRow \'获取生成此节点的DataRow
    
Select Case e.Node.Level
        Case 0
            Filter ="[
产品] = \'" & dr("产品") & "\'"
        Case 1
            Filter ="[
产品] = \'" & dr("产品") & "\' And [客户] = \'" & dr("客户") & "\'"
    End Select

End
 If
DataTables
("订单").LoadFilter = Filter
DataTables
("订单").Load()

这样我们只需双击某个节点,既可动态加载对应的订单。

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




目录树右边的数据,如何实现显示目录树的条件的数据,如上面代码,以产品和客户为目录,由于不涉及雇员、折扣列,让这两列的数据不显示?


如图



图片点击可在新窗口打开查看此主题相关图片如下:目录树显示.jpg
图片点击可在新窗口打开查看






--  作者:有点蓝
--  发布时间:2023/7/28 15:02:00
--  
http://www.foxtable.com/webhelp/topics/0572.htm
--  作者:lin98
--  发布时间:2023/7/28 17:01:00
--  
Dim cmd As New SQ-LCommand
cmd.C
Dim dt As DataTable
cmd.CommandText = "SELEC-T DISTINCT 产品ID,客户ID From {订单}"
dt = cmd.ExecuteReader()
Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
trv.BuildTree(dt, "产品ID|客户ID")
trv.Nodes.Insert("加载所有数据", 0)


Tables("订单").Cols("折扣").Visible = False

问题一:执行上面代码,没报错,没效果,还是全部显示


问题二:如何实现多个目录树的显示

1. 目录树一,以”产品“列为目录,右边只显示“产品、单价、数量、日期”
2. 目录树二,以”客户、产品“列为目录,右边只显示“客户、产品、单价、数量、日期”
3.  目录树三,以”雇员“列为目录,右边只显示“雇员产品、单价、数量、日期”






--  作者:有点蓝
--  发布时间:2023/7/28 17:06:00
--  
1、肯定可以,除非这个不是主表,是副本表

2、添加多个目录树,绑定不同列

Dim cmd As New SQ-LCommand
cmd.C
Dim dt As DataTable
cmd.CommandText = "SELEC-T DISTINCT 产品ID From {订单}"
dt = cmd.ExecuteReader()
Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
trv.BuildTree(dt, "产品ID")
trv.Nodes.Insert("加载所有数据", 0)

cmd.CommandText = "SELEC-T DISTINCT 产品ID,客户ID From {订单}"
dt = cmd.ExecuteReader()
trv = e.Form.Controls("TreeView2")
trv.BuildTree(dt, "产品ID|客户ID")
trv.Nodes.Insert("加载所有数据", 0)

--  作者:lin98
--  发布时间:2023/7/28 17:18:00
--  
2、添加多个目录树,绑定不同列

1. 目录树一,以”产品“列为目录,右边只显示“产品、单价、数量、日期”
2. 目录树二,以”客户、产品“列为目录,右边只显示“客户、产品、单价、数量、日期”
3.  目录树三,以”雇员“列为目录,右边只显示“雇员产品、单价、数量、日期”

目录树是4楼写法,问题是如何根据目录树不同,右边的表的数据显示也不同?
图片点击可在新窗口打开查看

--  作者:有点蓝
--  发布时间:2023/7/28 17:21:00
--  
如果要多个目录树控制同一个表格的列显示,到目录树的点击事件里处理