为了在大数据量中减少客户端在使用表格时对服务器及网络等资源的占用,我们需要在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)效率高。
缺点:由于 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 *
from table [查询条件]
order by id limit ?,?
优点:1)能完全实现功能需求;
2)效率高,资源占用少。
缺点:实现比较复杂,需要针对不的数据库设计不同的SQL来实现。
结论:对于我们的表格分页编辑需求,虽然会增加一定的编程工作量,但这种实现方案是最合适的。
慧都科技作为Developer Express公司目前在中国唯一正式授权的经销商,不仅为DXperience提供了全面的技术支持服务,同时还倾情打造 DevExpress for.net高级培训以及DXperience Winform子控件培训,让您深入了解控件实现效果和常见问题的解决思路,提高开发效率。
另外,为了从根本上帮您解决数据快速录入的问题,慧都控件网倾力打造了EVSolution QuickInput方案。它不仅支持全键盘操作,实现快速光标切换,而且还能进行联想查询、复杂数据搜索查询等功能。另外它还提供了丰富而友好的用户界面和用户体验,您可以根据需要,自动规范化格式,真正将Web软件的优势发挥得淋漓尽致!
据慧都科技透露,DevExpress旗下著名控件套包:DXperience™ Universal Subscription v2010 vol 1已经正式发布,该版本增加了众多新的WPF和Silverlight控件的新功能到整个产品线。众多新功能抢先体验!请关注慧都控件网!