以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [建议]加载树与筛选树合并  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=55292)

--  作者:涛声依旧5666
--  发布时间:2014/8/14 0:45:00
--  [建议]加载树与筛选树合并

最近FoaxTable更新频繁,感觉它越来越强大了,激起我重回FoxTable进行开发的欲望。
在探索了加载树工作方式后,觉得有些问题值得狐友们大家来讨论。
问题现象是:当我们在加载树节点间来回双击时,对应的DataTable的记录就重复清空、加载。白白消耗了带宽资源。
以狐表提供的范例《动态加载演示》为例,

1、当双击PD01/CS01节点时,DataTables("订单")加载了4条记录,
2、接着双击PD01/CS02节点时,DataTables("订单")加载了13条记录。

     应该说,这个结果是正确的。

3、但当我们重新双击PD01/CS01节点时,DataTables("订单")重新加载了4条记录。

此时要商榷的议题来了:CS01的记录在第一次双击时已经加载,但由于我们的第二次双击,CS01的记录在DataTable中没有保存,

                               造成第三次双击时,又加载了一次(非常遗憾的是,此时又将CS02的数据抛弃了)。

这种现象,成了现实版的“黑熊掰玉米”。

 

为此,是否可以将加载树与筛选树结合,大致的意思是:每次在加载树的节点之间切换时,DataTable中的记录是逐渐增加的(加法效应),而在对应的Table中,利用其筛选的能力,只显示对应的记录(减法效应)。

还是以《动态加载演示》为例:

1、当双击PD01/CS01节点时,DataTables("订单")加载了4条记录,此时Tables("订单")中也是CS01的4条记录;

2、接着双击PD01/CS02节点时,DataTables("订单")加载了13条记录,总记录数为17条记录(4+13),但在Tables("订单")中显示的是CS02的13条记录;
3、再次双击PD01/CS01节点时,DataTables("订单")不必再加载记录,仍为17条记录,而在但在Tables("订单")中显示的是CS01的4条记录;

 

以上观点,谨抛砖引玉,愿FoxTable越来越好。

[此贴子已经被作者于2014-8-14 0:46:55编辑过]

--  作者:y2287958
--  发布时间:2014/8/14 7:56:00
--  
不是有“AppendLoad”吗
--  作者:狐狸爸爸
--  发布时间:2014/8/14 8:27:00
--  

其实现在的筛选树和加载树,都可以不排除原来的数据的基础上显示新数据,你只需按住Ctrl键再单击节点即可。

参考:

http://www.foxtable.com/help/topics/2739.htm

http://www.foxtable.com/help/topics/2738.htm

 


--  作者:jspta
--  发布时间:2014/8/14 9:10:00
--  
楼主只考虑了加载而没有考虑数据的更新,使用LOAD的意义一是为了减少加载量,而是为了获取最新数据。

以目前的带宽和主机性能来说,加载100条和1000条速度基本差不多,无需纠结。
如果按照你的思路,代码上比较繁琐,而且加载过后不会再加载,就再也得不到最新数据了,失去了load的意义。

--  作者:涛声依旧5666
--  发布时间:2014/8/14 9:47:00
--  

现在不是加载100条or1000条的问题,是如何解决重复清除、重复加载的问题。

 


--  作者:有点甜
--  发布时间:2014/8/14 9:52:00
--  
以下是引用涛声依旧5666在2014-8-14 9:47:00的发言:

现在不是加载100条or1000条的问题,是如何解决重复清除、重复加载的问题。

 

 

亲,请用AppendLoad

 

http://www.foxtable.com/help/topics/2276.htm

 


--  作者:有点甜
--  发布时间:2014/8/14 9:55:00
--  

 或者你最后的

 

DataTables("表A").LoadFilter = Filter

 

 改成

 

Filter = iif(DataTables("表A").LoadFilter > "", DataTables("表A").LoadFilter & " or " & filter, Filter)

DataTables("表A").LoadFilter = Filter


--  作者:jspta
--  发布时间:2014/8/14 11:08:00
--  
以下是引用涛声依旧5666在2014-8-14 9:47:00的发言:

现在不是加载100条or1000条的问题,是如何解决重复清除、重复加载的问题。

 

不看重点额,图片点击可在新窗口打开查看


如果按照你的思路,代码上比较繁琐,而且加载过后不会再加载,就再也得不到最新数据了,失去了load的意义。


--  作者:lsy
--  发布时间:2014/8/14 11:19:00
--  

追加加载、刷新加载,各有各的用处。

但加载树的重点,应该是“加载”数据,不是“刷新”数据,所以楼主的看法有道理。

在我的“通用平台”中,已经用灵活的追加加载,取代了加载树。

 

即使是刷新数据,根据数据量的大小,也要采用不同的方式:

数据量小,直接Load;数据量大,只刷新修改或新增的数据。


--  作者:涛声依旧5666
--  发布时间:2014/8/14 11:21:00
--  
谢谢有点甜老师。追问一下,利用AppendLoad方法,能共享  .LoadTop、.LoadPage 等属性,实现分页加载吗?