以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  自动生成目录树:能否固定下来?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=3300)

--  作者:mr725
--  发布时间:2009/6/26 13:44:00
--  自动生成目录树:能否固定下来?
Dim tv As WinForm.TreeView
tv =e.Form.Controls(
"TreeView1")
tv.BuildDataTree(
"订单", "", "产品", "客户", "雇员")
这样形成的树目录,每次打开窗口(在afterload中含上面代码),都会重新加载一次,如果记录行数多时会很慢,如果已经加载过的树目录能固定下来,就不会每次打开这个窗口都重新加载了,需要时再刷新来重新加载不是更好吗? 不知道表达清楚了没有?~

--  作者:狐狸爸爸
--  发布时间:2009/6/26 13:45:00
--  
不可以的。
--  作者:mr725
--  发布时间:2009/6/26 13:50:00
--  

如果‘订单’表经过了筛选,那么形成的树目录就不完整了!~ 取消筛选显示所有行也会很慢~ 
希望最后能固定下来~   狐爸想想办法呀~ 


--  作者:狐狸爸爸
--  发布时间:2009/6/26 14:03:00
--  

筛选不影响的,因为目录树是根据DataTable生成的。


--  作者:mr725
--  发布时间:2009/6/26 17:32:00
--  
这两断代码有何区别吗?:


Dim Value() As String
Value = e.Node.FullPath.Split("\\")
Select Case e.Node.Level
    Case 0
        Tables("订单").Filter = "[产品] = \'" & Value(0) & "\'"
    Case 1
        Tables("订单").Filter = "[产品] = \'" & Value(0) & "\' And [客户] = \'" & Value(1) & "\'"
    Case 2
        Tables("订单").Filter = "[产品] = \'" & Value(0) & "\' And [客户] = \'" & Value(1) & "\' And [雇员] = \'" & Value(2) & "\'"
End Select

===================================
上下两断代码有何区别????? 黑色字体部分是一样的!~

===================================
Dim Value() As String
Dim Filter As string
Value = e.Node.FullPath.Split("-:special:1:-)
Select Case e.Node.Level
    Case 0
        Filter = "[产品] = \'" & Value(0) & "\'"
    Case 1
        Filter = "[产品] = \'" & Value(0) & "\' And [客户] = \'" & Value(1) & "\'"
    Case 2
        Filter = "[产品] = \'" & Value(0) & "\' And [客户] = \'" & Value(1) & "\' And [雇员] = \'" & Value(2) & "\'"
End Select
DataTables("订单").LoadFilter = Filter
DataTables("订单").Load()

这第二断代码在选择树目录后,重新打开有树目录的窗口后,不能完整加载树目录,而只能将由树目录筛选的结果加载到树目录里。

[此贴子已经被作者于2009-6-26 17:36:06编辑过]

--  作者:狐狸爸爸
--  发布时间:2009/6/26 17:38:00
--  
LoadFilter加Load是用于加载数据的,针对的是DataTable,意思是从后台加载符合条件的数据到DataTable中。
Filter是筛选,针对的是Table,意思是从DataTable中提取符合条件的数据显示在Table中。
两者作用完全不同。
--  作者:狐狸爸爸
--  发布时间:2009/6/26 17:43:00
--  
在使用LoadFilter加Load的时候,目录树不应该直接根据DataTable生成,其实之前那么多的动态加载数据演示,已经提供了很好的例子给你。

你可以打开CaseStudy目录下关于动态加载的示例文件,可以看到目录树并没有受到LoadFilter的影响。
--  作者:mr725
--  发布时间:2009/6/26 17:45:00
--  
以下是引用狐狸爸爸在2009-6-26 14:03:00的发言:

筛选不影响的,因为目录树是根据DataTable生成的。

5楼第二断代码筛选后,为什么重新加载树目录时,不能完整加载? 这个datatable也还在呀!


--  作者:狐狸爸爸
--  发布时间:2009/6/26 17:57:00
--  
DataTable是还在,但是内容不同了,因为你重新加载了。
例如总共有1000行,其中100行的产品为Pd01,现在重新加载,加载条件为产品等于pd01,那么Load后,DataTable就只有100行数据了,重新生成目录树的话,当然是不完整的,数据都不完整了嘛。
--  作者:mr725
--  发布时间:2009/6/26 18:27:00
--  
以下是引用狐狸爸爸在2009-6-26 17:57:00的发言:
DataTable是还在,但是内容不同了,因为你重新加载了。
例如总共有1000行,其中100行的产品为Pd01,现在重新加载,加载条件为产品等于pd01,那么Load后,DataTable就只有100行数据了,重新生成目录树的话,当然是不完整的,数据都不完整了嘛。

datatable是一个‘仓库’啊,怎么内容不同? 在这里好像变成了table了(由1000行变成了100行)???

datatable 和 table 可能是我等非正式学编程者的永远的痛啊~~~