XtraGrid中分頁實現的探討

2021-09-08 06:23:15 字數 2544 閱讀 3382

為了在大資料量中減少客戶端在使用**時對伺服器及網路等資源的占用,我們需要在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

asasql anywhere 8, sql anywhere 9

asesybase adaptive server 12

db2db2 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 *

from table [查詢條件]

order by id limit ?,?

優點:1)能完全實現功能需求;

2)效率高,資源占用少。

缺點:1)實現比較複雜,需要針對不的資料庫設計不同的sql來實現。

結論:對於我們的**分頁編輯需求,雖然會增加一定的程式設計工作量,但這種實現方案是最合適的。

asp中分頁的功能實現

set rs server.createobject adodb.recordset rs.open select from webdiy mb conn,1,3 if rs.bof and rs.eof then response.write 沒有模板 else 定義分頁 rs.pagesize ...

DRF框架中分頁實現

全域性分頁比較簡單,直接在settings中增加如下內容即可 django.contrib.admin django.contrib.auth django.contrib.contenttypes django.contrib.sessions django.contrib.messages dj...

Oracle中分頁查詢語句的實現

我們經常要訪問資料集的某乙個中間部分,例如第10到第20條記錄,oracle中有乙個很好語句來實現,那就是with。以下是使用的例子 with partdata as select rownum rowno,t.from table1 t where t.id 200407160000 select...