以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  今天决定买开发版!狐表真的不错!  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=49200)

--  作者:ap9709130
--  发布时间:2014/4/14 9:51:00
--  今天决定买开发版!狐表真的不错!

今天决定购买开发版!狐表真的很实用,希望以后更强大!早点可以做到手机也可以使用!

 

 

 

请客服联系我QQ:31696451。

 

多谢!


--  作者:Bin
--  发布时间:2014/4/14 9:53:00
--  
谢谢支持.
--  作者:babaala
--  发布时间:2014/4/14 9:58:00
--  
今天正式加入foxtable家庭,从试用到正式加盟,一个月时间。
图片点击可在新窗口打开查看此主题相关图片如下:无标题.gif
图片点击可在新窗口打开查看

--  作者:狐狸爸爸
--  发布时间:2014/4/14 10:00:00
--  

楼上,你亏了,下次有个很重要的功能,商业版没有的:

 

 

异步加载数据

 

异步加载数据仅对开发版有效,所以商业版和试用版用户,可以忽略本节内容。

加载数据是需要时间的,特别是网络环境且加载数据量较大的时候,对于用户意味着就是等待,严重影响使用者感受。

不过Foxtable提供了异步加载数据功能,加载数据可以在后台进行,在加载数据的同时,用户可以继续进行其它操作,无需等待。

我们知道DataTable有两个同步加载数据的方法,分别是Load和AppendLoad,对应的也有两个异步加载数据的方法,分别为LoadAsync和AppendLoadAsync。

 

LoadAsync

 

LoadAsync和Load的使用方法完全一样,只是前者是异步加载,后者是同步加载。

 

例如:

DataTables("订单").LoadFilter = "产品 =  \'PD01\'"
DataTables
("订单").LoadAsync()

 

为了准确地说明异步加载的特性,我们可以在命令窗口测试下面的代码:

 

DataTables("订单").RemoveFor("True") \'为了方便测试,先移除所有已经加载的数据,实际应用的时候,不需要如此。
Dim
dt As Date = Date.Now
DataTables
("订单").LoadFilter = "产品 =  \'PD01\'"
DataTables
("订单").LoadAsync()
Output
.Show("用时:" & (Date.Now - dt).TotalSeconds & "秒")
Output
.Show("目前行数:" & DataTables("订单").DataRows.Count)

 

可以看到用时几乎等于0,而目前行数每次都是等于0,也就是说Foxtable并没有等LoadAsync加载数据完成后就开始执行后续的代码。

当然执行上面的代码,确实会将产品为PD01的所单全部加载进来,那么怎样才能知道数据加载完成了呢,这就需要使用AfterLoad事件了

因为不管是是同步加载还是异步加载,在数据加载完成后,都会触发AfterLoad事件。

利用异步加载的这种特性,我们可以将需要定期加载刷新的表,转移到后台悄悄地执行,而不会对用户日常操作带来"停滞"、"卡"等影响。

但是需要注意,即使是异步加载,也不要太频繁地加载数据,因为我们还需要考虑服务器的承受能力。

 

AppendLoadAsync

 

AppendLoadAsync和AppendLoad的使用方法完全一样,只是前者是异步追载新数据,后者是同步追载新数据。

 

例如:

 

Dim id  As  Integer =  DataTables("订单").Compute("Max(_Identify)")
Dim
Filter As String =  "[_Identify] > " & id
DataTables
("订单").AppendLoadAsync(Filter, False)

 

再例如,设计用户间通讯的时候,如果用AppendLoadAsync代替AppendLoad,用户的感受会更好。

 

用异步加载提高窗口的打开速度

 

如果打开窗口的时候,需要加载大量的数据,那么会需要等待一段时间,才能打开窗口。
我们可以用异步加载来改善这个问题,例如有个SQLTable,将其Select语句定义为:

 

Select * From {订单} Where [_Identify] Is Null

 

然后在窗口的AfterLoad事件加上代码:

 

DataTables("窗口1_Table1").LoadFilter = "" \'清除原来的加载条件
DataTables("窗口1_Table1").LoadAsync()

 

这样打开窗口的过程并不会加载数据,而是在窗口打开后再异步加载数据,所以窗口打开的速度会大大提高。

 

异步Fill的实现

 

有点遗憾,Fill并没有对应的异步方法FillAsync,不过变通一下,同样可以实现异步Fill,例如:

 

Tables("窗口1_Table1").Fill("Select * From {订单} Where [_Identify] Is Null","",False)
DataTables("窗口1_Table1").LoadFilter = "" \'清除原来的加载条件
DataTables("窗口1_Table1").LoadAsync()

 

原理很简单:Fill只加载表结构,数据交给LoadAsync来异步加载。

[此贴子已经被作者于2014-4-14 10:01:15编辑过]

--  作者:Bin
--  发布时间:2014/4/14 10:01:00
--  
32个赞
--  作者:lsy
--  发布时间:2014/4/14 10:06:00
--  

太好了,太棒了,恭贺。


--  作者:L88919138
--  发布时间:2014/4/14 10:19:00
--  
图片点击可在新窗口打开查看老爸说得我两眼放光,期侍尽快出来。
--  作者:babaala
--  发布时间:2014/4/14 10:28:00
--  
我希望你们完善一下图表着色功能,根据每根线的正负数来着不同的颜色,比方说正数我设置红色的bar或者line,负数我设置绿色的bar或者线,当前的图表是没有办法做到。
--  作者:黄训良
--  发布时间:2014/4/14 10:30:00
--  
期待更新!
--  作者:逛逛
--  发布时间:2014/4/14 10:54:00
--  

狐爸,写帮助的时候,觉得还是配合LoadTop  ,先加载个50或100条的,更有吸引力。否则打开时,一条数据也没有,不好看。