Asp.Net分頁和AspNetPager控件的使用

一般情況下我們都是通過sql語句來分頁,這在無論哪種開發(fā)語音都是通用的,
使用sql語句或者存儲(chǔ)過程分頁的方式最主要的是要在讀取數(shù)據(jù)的時(shí)候把sql語句或者存儲(chǔ)過程寫好,它的原理是只讀取當(dāng)前要顯示的幾行記錄,所以要根據(jù)頁數(shù)和每頁顯示的數(shù)目來寫語句,如下:
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)前頁數(shù)和每頁顯示的數(shù)目,就可以實(shí)現(xiàn)分頁了,為了顯示總數(shù)目,還可以讀取所有數(shù)目,需要注意的時(shí)候,如果是自定義分頁視圖,由于.net在回傳的時(shí)候不保存當(dāng)前頁,所以要使用ViewState來保存頁數(shù),每次只讀取所需要的幾條記錄,所以適合做大型網(wǎng)站數(shù)量比較大的時(shí)候使用
另外一種分頁方式就是使用.net提供的PageDataSource類來分頁,
PageDataSource是微軟提供一個(gè)用于分頁使用的類,集成了綁定控件的一些方法,在使用的時(shí)候,我們只需要從數(shù)據(jù)庫讀取我們所要的數(shù)據(jù),綁定到PageDataSource即可,然后允許PageDataSource可以分頁,指定當(dāng)前頁和每頁要顯示的數(shù)目,這樣就可以很好的獲得的總的數(shù)目,結(jié)合控件,ViewState就可以完成自定義分頁視圖,方法如下:
PagedDataSource pageDataSource = new PagedDataSource();
由于PageDataSource是將所有的數(shù)據(jù)都讀出來,然后再分頁的,所有適合一些小型網(wǎng)站,比如企業(yè)站,數(shù)量不是很大的時(shí)候使用,大概2w以內(nèi)的數(shù)據(jù)使用
上面是常用的兩種分頁方式,下面在來看看分頁視圖控件AspNetPager的用法:
AspNetPager屬于第三方控件,就是說既不是微軟開發(fā)的,也不是你開發(fā)的,而是由其他技術(shù)員自己開發(fā)的,共享給我們用的控件,所以在使用的時(shí)候,我們首先要從網(wǎng)上下載下來,然后和其他控件一樣,首先將其放到工具箱內(nèi),這里你可以直接拖進(jìn)來,或者也可以右擊工具菜單項(xiàng)---選擇項(xiàng),找到目錄添加進(jìn)來即可
下面簡單說一下它的一些屬性和方法
NextPageText="下一頁"
UrlRewritePattern:重寫的url,如:AspNetPager1.UrlRewritePattern = "NewList.aspx?dd={0}"
注:這里要提到的是如果要改變要顯示頁碼的參數(shù),那就必須修改顯示,然后再修改url中的參數(shù)
兩個(gè)常用的方法
1、PageChanging:分頁之前的操作,所以要想獲得當(dāng)前控件的頁碼就必須在方法內(nèi)賦值才可以,否則AspNetPager1.CurrentPageIndex永遠(yuǎn)獲得的當(dāng)前頁的值都是1,因?yàn)榫拖喈?dāng)于你沒點(diǎn)擊任何頁碼,從開始都是1,所以你無論點(diǎn)擊那個(gè)頁碼說,之前的都是1
}
之所以減1是因?yàn)橐Y(jié)合的分頁方法和PageDataSource都是從0開始的
GrilView中自定義的分頁,我們也會(huì)用到它的
}
2、PageChanged:點(diǎn)擊頁碼之后的操作,所以可以直接通過AspNetPager1.CurrentPageIndex – 1獲得當(dāng)前頁的頁數(shù),因?yàn)橹按_實(shí)點(diǎn)擊了頁碼數(shù),很顯然會(huì)獲得當(dāng)前的頁碼數(shù)
}
如果使用了AspNetPager來分頁,那么只要指定總數(shù)給aspNetPager,當(dāng)前頁用aspNetPager來指定,并保證每頁顯示的數(shù)目aspNetPager和PageDataSource指定的一致就可以實(shí)現(xiàn)分頁了,簡單吧,這個(gè)頁數(shù)的控制就不使用viewstate來保存了,頁數(shù)和頁顯示記錄直接通過Asp.Net來控制就行了
需要注意的是有些需要一致的東西,如果沒有一致,就有可能導(dǎo)致不協(xié)調(diào),比如該分4頁的,但是aspNetPager只顯示了2頁等,這些都需要注意的!
下面簡單分享一下分頁控件的一個(gè)樣式:

Css樣式:
.pages
{
}
.pages a, .pages .cpb
{
}
.pages a:hover
{
}
.pages .cpb
{
}
- asp.net中讓Repeater和GridView支持DataPager分頁
- Asp.Net數(shù)據(jù)控件引用AspNetPager.dll分頁實(shí)現(xiàn)代碼
- 分享一個(gè)asp.net pager分頁控件
- asp.net分頁控件AspNetPager的樣式美化
- asp.net下Repeater使用 AspNetPager分頁控件
- asp.net 通過aspnetpager為DataList分頁
- asp.net結(jié)合aspnetpager使用SQL2005的存儲(chǔ)過程分頁
- AspNetAjaxPager,Asp.Net通用無刷新Ajax分頁控件,支持多樣式多數(shù)據(jù)綁定
- asp.net 分頁sql語句(結(jié)合aspnetpager)
- asp.net mvc自定義pager封裝與優(yōu)化
相關(guān)文章
使用ASP.NET.4.5.1+MVC5.0 搭建一個(gè)包含 Ninject框架 項(xiàng)目
這篇文章主要介紹了使用ASP.NET.4.5.1+MVC5.0 搭建一個(gè)包含 Ninject框架 項(xiàng)目的方法,需要的朋友可以參考下2015-01-01
詳解如何在ASP.NET Core中應(yīng)用Entity Framework
本篇文章主要介紹了如何在ASP.NET Core中應(yīng)用Entity Framework,具有一定的參考價(jià)值,有興趣的可以一起了解一下。2016-12-12
asp.net實(shí)現(xiàn)刪除DataGrid的記錄時(shí)彈出提示信息
這篇文章主要介紹了asp.net實(shí)現(xiàn)刪除DataGrid的記錄時(shí)彈出提示信息,非常實(shí)用的功能,需要的朋友可以參考下2014-08-08
使用jQuery Uploader顯示文件上傳進(jìn)度
在上傳大文件的時(shí)候, 我們都希望可以向用戶顯示上傳的進(jìn)度, 那么這里介紹的就是使用 jQuery Uploader 來實(shí)現(xiàn)這樣的效果2011-12-12

