概述
在實際的系統開發過程中經常會遇到系統內建的分頁控制項不能滿足要求或者其樣式太單一,需要自訂開發分頁控制項的情況,這個功能雖然很小但是很實用.
是這個自訂控制項的顯示
原始碼下載 /Files/happlyonline/PageCounter.rar
使用
在使用這個pagecounter的頁面給pagecounter控制項的當前頁,頁大小,資料來源的總count數的屬性賦值即可.
int page = 1;
page = Convert.ToInt32(Page.Request.QueryString["page"]);
PagerCounter.PageIndex = page;
PagerCounter.PageSize = 20;
PagerCounter.UrlFormat = Page.Request.Url.AbsolutePath + "?page={0}";
PagerCounter.ItemCount = Count;
在頁面換頁後IE中的URL地址會改變為 http://xxx/xxx/xx.aspx?page=2, 所以在使用的時候需要考慮實際情況稍加修改
在gridview中使用自訂的分頁控制項
由於gridview提供了<PagerTemplate>的模版列,可根據實際情況在這裡寫自訂的分頁控制項
有用的分頁預存程序
CREATE procedure
sys_getpagerrecord
(
@strSql Varchar(3000), --傳入的Sql語句
@pagesize int, --頁面大小,如每頁儲存20條記錄
@pageindex int --當前頁碼
)
as
set nocount on
begin
declare @PageLowerBound int --定義此頁的底碼
declare @PageUpperBound int --定義此頁的頂碼
declare @execSql varchar(3000
)
set @PageLowerBound = (@pageindex-1) * @pagesize
set @PageUpperBound = @PageLowerBound + @pagesize
set rowcount @PageUpperBound
create table #IndexTable (id int Identity(1,1) , autoInc varchar(500
))
set @execSql = 'insert into #IndexTable (autoInc) select autoInc from (' + @strSql + ') as tempview'
print @execSql
exec(@execSql
)
set @execSql = 'select * from (' + @strSql + ') as tempview inner join #IndexTable as b on tempview.autoInc = b.autoInc where b.id>' + str(@PageLowerBound) + ' and b.id<=' + str(@PageUpperBound) + ' order by b.id'
print @execSql
exec(@execSql
)
end
set nocount off
GO
在這裡set rowcount 主要用於提高效能每次唯讀取一頁的資料