Foxtable(狐表)用户栏目专家坐堂 → 再提DataList显示行号和选择框的速度问题!


  共有23500人关注过本帖树形打印复制链接

主题:再提DataList显示行号和选择框的速度问题!

帅哥哟,离线,有人找我吗?
cpayinyuan
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
再提DataList显示行号和选择框的速度问题!  发帖心情 Post By:2009/4/24 8:16:00 [显示全部帖子]

    我以前提过,DataList的RowHeaderVisible和 CheckBoxes应作为加载后的一项属性来对待,而目前的系统中作为加载时的一个选项,改变这个设置后需要重新用Build加载才生效。以前只是感觉不太合适,没有意识到有什么大的问题,现在发现最严重的问题在于速度。
    现在我在DataList显示后,改变一下这个选项,需要重新加载 DataList的数据,基本上需要等待30秒左右的时间,而如果是把这两个选项改为加载后的选项,估计1秒钟就够了吧(改变RowFilter就很快)。所以,希望贺老师把这个选项改一下。
[此贴子已经被作者于2009-4-24 10:01:54编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
cpayinyuan
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2009/4/24 9:59:00 [显示全部帖子]

以下是引用狐狸爸爸在2009-4-24 8:46:00的发言:

嘿嘿,我从来就没有说Build就必须重新加载数据,是你自己这么想的。

你可以做一个切换按钮:

With e.Form.Controls("DataList1")
    .CheckBoxes = Not .CheckBoxes
    .Build
End With

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

我表达得不太对,但事实仍然是如此,仍然存在同样的问题!
只要用build,速度就非常慢,需要很长时间!但若改变DataList的属性或者用RowFilter,需要的时间就非常短.


 回到顶部
帅哥哟,离线,有人找我吗?
cpayinyuan
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2009/4/24 11:11:00 [显示全部帖子]

以下是引用狐狸爸爸在2009-4-24 11:02:00的发言:
是的,除非来两列,一个行号,一个复选框,分别设置,否则没办法。

    希望贺老师不要轻易说没有办法!
    切换一下行号/选择框,对DataList的主体部分的显示没有任何影响,难道会需要很复杂的运算、需要很长的时间吗?我不知道DataList的Build都作了哪些操作,但我相信,当我改变显示行号的选项后运行Build,如果单纯改变显示行号还是选择框应该是很快的,目前的系统肯定做了许多不必要的重复性运算,所以速度才会这么慢!虽然这是个小问题,但目前的速度,当数据量大的时候这个功能根本无法使用,建议想办法改进一下!许许多多复杂的问题都能解决了,我不相信这个小问题解决不了?!
    另外ColumnList也存在同样的速度非常慢的问题。
    补充:行号和选择框在表内部怎么存储我们不关心,我只关心速度的问题。

   



[此贴子已经被作者于2009-4-24 11:14:21编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
cpayinyuan
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2009/4/24 13:23:00 [显示全部帖子]

以下是引用kylin在2009-4-24 12:46:00的发言:
既然窗口的Table控件可以支持任意表的“绑定”,DataList控件的用途应该说不要寄望很多了,至少以为对于输入控制在Table控件会更好的
DataList控件仅用来查询 需要临时加工的数据
一家之见,大家讨论,呵呵

    恰恰相反,我的系统中,窗口中显示表的地方几乎全部都是DataList,我基本上不会把Table放在窗口中.
    原因很简单,Table实质上是把表挪在了窗口中.你可以多分析一些现成的应用系统,在一般的系统中都不会直接在表上进行编辑(在表中直接编辑是电子表格的操作方式),而是通过窗口中的其他控件编辑或显示数据,然后,再把控件中的值与表交换(写入表或者从表读出).所以,在我看来,DataList的用途实际上也非常广泛.就像你说的,虽然DataList仅用来查询表,但在实际应用中,窗口中恰恰需要的就是显示查询表,一般情况下并不需要直接编辑表.
    个人意见,不一定对,供大家参考.

[此贴子已经被作者于2009-4-24 13:24:54编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
cpayinyuan
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2009/4/24 15:09:00 [显示全部帖子]

以下是引用kylin在2009-4-24 14:52:00的发言:

据我的一个朋友介绍,DataList控件写入数据的机制是一个个单元格写入的,比起Table控件采用直接绑定的机制,在加载数据上的效率不是一个水平的
如果以上属实的话,那么就无法期望DataList控件加载大量数据可以瞬间完成的
Table控件,如果将表的AllowEdit属性设为False就可以禁止编辑的

      呵呵.我的本意是不太赞同在Table中直接编辑数据,而且我总感觉直接在窗口中显示Table不太符合系统设计的惯例.其实你说得对,如果是作为显示,将表的AllowEdit属性设为False,在绝大多数情况下Table都可以代替DataList.
     但DataList作为显示时也有它的优势,例如DataList可实现动态绑定,可以更方便的实现更多的查询统计/汇总等功能等等.所以,我希望在大量使用Table的同时,DataList也要逐步增强,两者还是各有优势的!


 回到顶部