kbmMWSmartBind实现ListView绑定数据集进阶篇(三) kbmMWSmartBind实现ListView绑定数据集进阶篇(二)。

基于kbmMW SmartBind,在实际项目中应用过程中,遇到了显示效率太低的问题,用户在项目沟通会上反馈这一问题,让咱这开发者都感觉尴尬了。具体的实现过程,参考kbmMWSmartBind实现ListView绑定数据集进阶篇(二)。

为什么造成这样的问题呢?

经过反复测试代码,问题出在重复绑定上,Listview与ClientQuery绑定,当利用ClientQuery做数据查询,就会遇到反复打开数据集,这时候,我们要重新绑定,即:在打开数据集前,要解除绑定,打开后再重新绑定。

有什么办法来解决不重复绑定吗?答案是有的。

为了解决这一问题,就要解决,重新打开数据集时,不重建字段,ClientQuery为我们提供了一个属性:AutoFieldDefsOnOpen,关于这个属性的用法,在很早的文章中我有介绍过,这里再简要说明下:

Always:每次打开数据集都重新取字段定义,这是默认值

Never:从不取字段定义,这种情况,需要我们在设计期为ClientQuery建好字段

Once:只取一次字段定义,即第一次打开数据集时才取。

WithData:

好了,现在我们将AutoFieldDefsOnOpen设置为mwafoOnce,让数据集只取一次字段定义,避免重复打开数据集时重建字段,进而避免每次都重复执行绑定。最终,我们用下面的方式实现绑定:

ClientQuery.AutoFieldDefsOnOpen:=mwafoNever;
ClientQuery.Query.Text:=Select * from test';
ClientQuery.Open;
FBind.Bind(...)
...

经过这样改进,Listview显示的速度就从蜗牛变成飞机了!

猜你喜欢

转载自www.cnblogs.com/kinglandsoft/p/12893284.html