Asp.Net分頁(yè)和AspNetPager控件的使用
一般情況下我們都是通過(guò)sql語(yǔ)句來(lái)分頁(yè),這在無(wú)論哪種開發(fā)語(yǔ)音都是通用的,
使用sql語(yǔ)句或者存儲(chǔ)過(guò)程分頁(yè)的方式最主要的是要在讀取數(shù)據(jù)的時(shí)候把sql語(yǔ)句或者存儲(chǔ)過(guò)程寫好,它的原理是只讀取當(dāng)前要顯示的幾行記錄,所以要根據(jù)頁(yè)數(shù)和每頁(yè)顯示的數(shù)目來(lái)寫語(yǔ)句,如下:
Select top pageSize * from News where id not in(select top (Page-1)*pageSize id from News)
很顯然只要將pageSize和Page作為參數(shù)就可以了,然后再前臺(tái)調(diào)用的時(shí)候只要指定當(dāng)前頁(yè)數(shù)和每頁(yè)顯示的數(shù)目,就可以實(shí)現(xiàn)分頁(yè)了,為了顯示總數(shù)目,還可以讀取所有數(shù)目,需要注意的時(shí)候,如果是自定義分頁(yè)視圖,由于.net在回傳的時(shí)候不保存當(dāng)前頁(yè),所以要使用ViewState來(lái)保存頁(yè)數(shù),每次只讀取所需要的幾條記錄,所以適合做大型網(wǎng)站數(shù)量比較大的時(shí)候使用
另外一種分頁(yè)方式就是使用.net提供的PageDataSource類來(lái)分頁(yè),
PageDataSource是微軟提供一個(gè)用于分頁(yè)使用的類,集成了綁定控件的一些方法,在使用的時(shí)候,我們只需要從數(shù)據(jù)庫(kù)讀取我們所要的數(shù)據(jù),綁定到PageDataSource即可,然后允許PageDataSource可以分頁(yè),指定當(dāng)前頁(yè)和每頁(yè)要顯示的數(shù)目,這樣就可以很好的獲得的總的數(shù)目,結(jié)合控件,ViewState就可以完成自定義分頁(yè)視圖,方法如下:
PagedDataSource pageDataSource = new PagedDataSource();
由于PageDataSource是將所有的數(shù)據(jù)都讀出來(lái),然后再分頁(yè)的,所有適合一些小型網(wǎng)站,比如企業(yè)站,數(shù)量不是很大的時(shí)候使用,大概2w以內(nèi)的數(shù)據(jù)使用
上面是常用的兩種分頁(yè)方式,下面在來(lái)看看分頁(yè)視圖控件AspNetPager的用法:
AspNetPager屬于第三方控件,就是說(shuō)既不是微軟開發(fā)的,也不是你開發(fā)的,而是由其他技術(shù)員自己開發(fā)的,共享給我們用的控件,所以在使用的時(shí)候,我們首先要從網(wǎng)上下載下來(lái),然后和其他控件一樣,首先將其放到工具箱內(nèi),這里你可以直接拖進(jìn)來(lái),或者也可以右擊工具菜單項(xiàng)---選擇項(xiàng),找到目錄添加進(jìn)來(lái)即可
下面簡(jiǎn)單說(shuō)一下它的一些屬性和方法
NextPageText="下一頁(yè)"
UrlRewritePattern:重寫的url,如:AspNetPager1.UrlRewritePattern = "NewList.aspx?dd={0}"
注:這里要提到的是如果要改變要顯示頁(yè)碼的參數(shù),那就必須修改顯示,然后再修改url中的參數(shù)
兩個(gè)常用的方法
1、PageChanging:分頁(yè)之前的操作,所以要想獲得當(dāng)前控件的頁(yè)碼就必須在方法內(nèi)賦值才可以,否則AspNetPager1.CurrentPageIndex永遠(yuǎn)獲得的當(dāng)前頁(yè)的值都是1,因?yàn)榫拖喈?dāng)于你沒點(diǎn)擊任何頁(yè)碼,從開始都是1,所以你無(wú)論點(diǎn)擊那個(gè)頁(yè)碼說(shuō),之前的都是1
}
之所以減1是因?yàn)橐Y(jié)合的分頁(yè)方法和PageDataSource都是從0開始的
GrilView中自定義的分頁(yè),我們也會(huì)用到它的
}
2、PageChanged:點(diǎn)擊頁(yè)碼之后的操作,所以可以直接通過(guò)AspNetPager1.CurrentPageIndex – 1獲得當(dāng)前頁(yè)的頁(yè)數(shù),因?yàn)橹按_實(shí)點(diǎn)擊了頁(yè)碼數(shù),很顯然會(huì)獲得當(dāng)前的頁(yè)碼數(shù)
}
如果使用了AspNetPager來(lái)分頁(yè),那么只要指定總數(shù)給aspNetPager,當(dāng)前頁(yè)用aspNetPager來(lái)指定,并保證每頁(yè)顯示的數(shù)目aspNetPager和PageDataSource指定的一致就可以實(shí)現(xiàn)分頁(yè)了,簡(jiǎn)單吧,這個(gè)頁(yè)數(shù)的控制就不使用viewstate來(lái)保存了,頁(yè)數(shù)和頁(yè)顯示記錄直接通過(guò)Asp.Net來(lái)控制就行了
需要注意的是有些需要一致的東西,如果沒有一致,就有可能導(dǎo)致不協(xié)調(diào),比如該分4頁(yè)的,但是aspNetPager只顯示了2頁(yè)等,這些都需要注意的!
下面簡(jiǎn)單分享一下分頁(yè)控件的一個(gè)樣式:
Css樣式:
.pages
{
}
.pages a, .pages .cpb
{
}
.pages a:hover
{
}
.pages .cpb
{
}
- asp.net中讓Repeater和GridView支持DataPager分頁(yè)
- Asp.Net數(shù)據(jù)控件引用AspNetPager.dll分頁(yè)實(shí)現(xiàn)代碼
- 分享一個(gè)asp.net pager分頁(yè)控件
- asp.net分頁(yè)控件AspNetPager的樣式美化
- asp.net下Repeater使用 AspNetPager分頁(yè)控件
- asp.net 通過(guò)aspnetpager為DataList分頁(yè)
- asp.net結(jié)合aspnetpager使用SQL2005的存儲(chǔ)過(guò)程分頁(yè)
- AspNetAjaxPager,Asp.Net通用無(wú)刷新Ajax分頁(yè)控件,支持多樣式多數(shù)據(jù)綁定
- asp.net 分頁(yè)sql語(yǔ)句(結(jié)合aspnetpager)
- asp.net mvc自定義pager封裝與優(yōu)化
相關(guān)文章
ASP.NET MVC下Ajax.BeginForm方式無(wú)刷新提交表單實(shí)例
下面小編就為大家分享一篇ASP.NET MVC下Ajax.BeginForm方式無(wú)刷新提交表單實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-01-01asp.net 獨(dú)立Discuz頭像編輯模塊分離打包
在Discuz產(chǎn)品系列(包括UCenter、UCHome)中有一個(gè)flash頭像上傳編輯的功能比較好用,和之前自己用js實(shí)現(xiàn)的照片在線編輯插件比較像,于是想將它獨(dú)立出來(lái),一方面可以學(xué)習(xí)研究,另一方面有機(jī)會(huì)可以在項(xiàng)目中使用(這里主要是指Asp.Net程序,php的與之類似)。2011-06-06.NET生成動(dòng)態(tài)驗(yàn)證碼的完整步驟
這篇文章主要給大家介紹了關(guān)于.NET生成動(dòng)態(tài)驗(yàn)證碼的完整步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用.NET具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07(asp.net c#)DropDownList綁定后顯示對(duì)應(yīng)的項(xiàng)的兩種方法
(asp.net c#)DropDownList綁定后顯示對(duì)應(yīng)的項(xiàng)的兩種方法 其實(shí)兩個(gè)方法的思路都是一樣,都是拿id去配對(duì)2011-04-04ASP.NET MVC中異常處理&自定義錯(cuò)誤頁(yè)詳析
當(dāng)ASP.NET MVC程序出現(xiàn)了異常,怎么處理更加規(guī)范?下面這篇文章主要給大家介紹了關(guān)于ASP.NET MVC中異常處理&自定義錯(cuò)誤頁(yè)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2018-04-04Asp.net+jquery+.ashx文件實(shí)現(xiàn)分頁(yè)思路
分頁(yè)思路: .ashx程序中,編寫好取得不同頁(yè)碼的程序。在頁(yè)面布局好的前提下,留下數(shù)據(jù)區(qū)域 div。然后在頁(yè)面請(qǐng)求 .ashx程序生成下一頁(yè)的html代碼。覆蓋div.innerHTMl2013-03-03.NET 6開發(fā)TodoList應(yīng)用之實(shí)現(xiàn)ActionFilter
Filter在.NET Web API項(xiàng)目開發(fā)中也是很重要的一個(gè)概念,它運(yùn)行在執(zhí)行MVC響應(yīng)的Pipeline中執(zhí)行,允許我們將一些可以在多個(gè)Action之間重用的邏輯抽取出來(lái)集中管理。本文將詳細(xì)介紹一下.NET 6如何實(shí)現(xiàn)ActionFilter,感興趣的可以學(xué)習(xí)一下2021-12-12asp.net SqlParameter關(guān)于Like的傳參數(shù)無(wú)效問(wèn)題
用傳參方式模糊查詢searchName2009-06-06.net驗(yàn)證碼的刷新或局部刷新的方法實(shí)例
.net驗(yàn)證碼的刷新或局部刷新的方法實(shí)例,下面是實(shí)例,需要的朋友可以參考一下2013-03-03