设为首页 收藏本站
查看: 1115|回复: 0

[经验分享] XtraGrid中分页实现的探討

[复制链接]

尚未签到

发表于 2016-11-22 10:02:33 | 显示全部楼层 |阅读模式
      为了在大数据量中减少客户端在使用表格时对服务器及网络等资源的占用,我们需要在XtraGrid表格中实现分页操作的功能。根据这个功能需求,结合XtraGrid的基本功能,提出了以下2种实现分页操作的方案,并逐一进行了研究和论证。
1、利用XtraGrid本身的Server Mode模式
XtraGrid为了满足对大数据量访问时的性能要求,提供了一种叫做Server Mode的工作模式,在这种模式中,XtraGrid将不会一次性从数据源中读取所有数据到内存中,而是根据需要从数据源中读取少量数据并显示到屏幕上。但XtraGrid在这种模式下工作时有一些限制:
1)不能编辑、增加、删除数据;
2)不能通过显示值来进行排列和过滤数据(但可以用编辑值来进行这些操作);
3)用户排序时不触发ColumnView.CustomColumnSort事件;
4)用户分组时不触发GridView.CustomColumnGroup事件;
5)用户计算汇总时不触发GridView.CustomSummaryCalculate事件;
6)在Server Mode模式下,数据表的主键不能由多个列组合而成。

  此外,因为在XtraGrid的Server Mode模式下可以使用eXpress Persistent Objects library (XPO)方式联接数据源,所以在使用XPO方式联接时,也需要相关数据库支持XPO方式,以下就列出了支持XPO方式的数据库及版本:
  
  Database Engine
  Version(s)
  Advantage
  Advantage Data Architect v7.1
  Asa
  SQL Anywhere 8, SQL Anywhere 9
  Ase
  Sybase Adaptive Server 12
  DB2
  DB2 8.1.9
  Firebird
  Firebird 1.5, Firebird 2.0
  MSAccess
  Microsoft Jet
  MSSqlServer
  Microsoft SqlServer 7.0, Microsoft SqlServer 2000, MS SQL Server 2000 Desktop Engine (MSDE 2000), Microsoft SqlServer 2005, SQL Server 2005 Express Edition
  MSSqlServerCE
  Microsoft SqlServer 2005 Mobile, Microsoft SqlServer 2005 Everywhere Edition CTP
  MySql
  MySQL Server 4.1, MySQL Server 5.0
  Oracle
  Oracle 9i, Oracle 10g
  Pervasive
  Pervasive.SQL 9
  Postgres
  PostgreSQL 8.1
  SQLite
  SQLite 3
  VistaDB
  VistaDB 2.1

  优点:1)实现简单。2)效率高。
缺点:1)由于 XtraGrid的Server Mode模式下的确是限制了对数据的编辑操作,表格就只能看不能写,从而无法达到我们在表格中编辑数据的要求。
结论:因为在查找项控件(LookupEdit控件)中只会去读取选项来进行选择,所以可以使用该模式来提高速度。对于一般表格,只使用这种方式实现分页查看功能,但不能用于编辑。


  2、利用数据库的关键字和算法
在SQLSERVER和ORACLE中,可以利用一些特殊的关键字和算法(SQL)来实现分页功能。
1)在SQLSERVER中,可以利用TOP关键字来实现分页功能,例如以下SQL就能实现分页算法:
select top [pagesize] *
from table
where id not in
( select top [pagesize*(currentpage-1)] id from table [查询条件] order by id )
    and [查询条件]
order by id
  2)在ORACLE中可以利用ROWNUM关键字来实现分页算法,例如以下分页算法:
SELECT *
FROM ( SELECT row_.*, rownum rownum_
      FROM (...... ) row_
      WHERE rownum <= ?)
WHERE rownum_ > ?

  3)在MYSQL中利用LIMIT关键字来实现分页算法,例如以下分页算法:
  select *
f
rom table [查询条件]
order by id limit ?,?

  优点:1)能完全实现功能需求;
2)效率高,资源占用少。
缺点:1)实现比较复杂,需要针对不的数据库设计不同的SQL来实现。
结论:对于我们的表格分页编辑需求,虽然会增加一定的编程工作量,但这种实现方案是最合适的。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-303891-1-1.html 上篇帖子: 我正在做的一个P2P工具 下篇帖子: ArcGIS Server 9.3 beta 体验一
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表