日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

超级简单:在你的ASP.NET页面自定义列表和分页

發(fā)布時間:2024/9/21 asp.net 56 豆豆
生活随笔 收集整理的這篇文章主要介紹了 超级简单:在你的ASP.NET页面自定义列表和分页 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?代碼:/Files/zhuqil/custompagingandlisting.rar

?AdventureWorks數(shù)據(jù)庫:http://www.codeplex.com/MSFTDBProdSamples/Release/ProjectReleases.aspx?ReleaseId=4004

??

???? 這個例子展示如何使用SQL Server 2005 的ROW_NUMBER功能去分頁,以及通過在code-behind中自定義HTML輸出比較好看的界面。

? ?首先,我們必須去選擇的列表記錄,通常使用的分頁技術(shù)是我們將所有的記錄放入一個dataset,然后使用PagedDataSource來顯示適當?shù)捻摗?/span>這種技術(shù)主要不好的地方是在內(nèi)存中存儲了所有的記錄,而在頁面上僅僅顯示其中的一些記錄。每次你點擊頁碼,每次它都將查詢了所有的記錄。為了克服這個頭痛的問題,我將有效地使用SQL Server 2005的ROW_NUMBER?功能。

????我們將傳遞兩個參數(shù),存儲過程能查詢特定的記錄。

??? @intCurrentPage?int?- 這個參數(shù)用來表示當前頁碼。

??? @intRecordPerPage?int?-? 這個參數(shù)用來得到一頁中顯示的記錄數(shù)量。

??? 例如,如果我們將?@intCurrentPage設置為1?,將@intRecordPerPage設置為10,結(jié)果將會是1到10的記錄。 這個存儲過程連接到AdventureWorks數(shù)據(jù)庫,從Production.Product?查詢記錄。

代碼

???? 通過傳遞:@intCurrentPage=1, @intRecordPerPage=10,執(zhí)行上面的存儲過程

???

??? 第一個結(jié)果集是第一頁的記錄,第二個結(jié)果集是記錄的總和。

??? 在AdventureWorks 數(shù)據(jù)庫中執(zhí)行這個存儲過程,創(chuàng)建一個連接字符串來連接AdventureWorks。

connectionString?="Data?Source=[SERVER?NAME];
???Initial?Catalog
=AdventureWorks;User?ID=[USERNAME];?Password=[PASSWORD]"?/>

??? 現(xiàn)在我們在數(shù)據(jù)庫中準備好存儲過程,開始實現(xiàn)我們的列表和分頁方法。?為了顯示列表,我將不使用任何數(shù)據(jù)源控件,我將直接在aspx頁面上輸出。對于這個,在后臺代碼中,我們首先定義兩個字符串。

???protected?string?strList;?//?to?set?the?HTML?of?the?listing
???protected?string?strPages;//to?set?the?HTML?of?paging

???? 字符串變量strList?用來保存記錄的列表的HTML,strPages?用來保存分頁的HTML。首先,我必須得到頁的索引,我將頁的索引存放在隱藏的文本字段中(txtHidPageIndex)。默認,第一頁將被顯示。我們將用戶點擊的頁索引,將它存儲在這個隱藏字段中 ,服務端能訪問這個隱藏字段來獲得頁碼。我們需要一個服務端控件來監(jiān)聽頁面的點擊。?我在頁面上添加一個link button控件(lnkPaging)來初始化clicking,它也能完成一些服務端的動作。

??? 寫一個javascript函數(shù)來接受頁碼和將頁碼以及將它放到隱藏字段中。?在此之后,執(zhí)行l(wèi)ink button的回傳,這樣我們能執(zhí)行服務端的操作。該鏈接按鈕的Click事件可以發(fā)起的ASP.NET doPostBack方法。

function?doPaging(intPageIndex)
{
????document.getElementById(
'txtHidPageIndex').value=intPageIndex;
????__doPostBack(
'lnkPaging','');
}

??link button (lnkPaging) 的后臺代碼如下:

?????protected?void?lnkPaging_Click(object?sender,?EventArgs?e)
????????{
????????????DoSearch(
int.Parse(txtHidPageIndex.Value));
????????}

???? 下面的片段顯示如何將記錄填充到reader中。

代碼

???????我設置一頁顯示10條記錄。如果你想讓用戶自定義每頁的記錄數(shù)量,在你的網(wǎng)站中,你能添加一個選項設置值。用這個值來作為每頁顯示的記錄數(shù)量。現(xiàn)在,我們在reader已經(jīng)有了結(jié)果。創(chuàng)建一個StringBuilder?來存儲創(chuàng)建的?HTML 。

代碼

???? 在創(chuàng)建列表的HTML之后,我將它分配給一個保護的變量strList。

strList = sbHTML.ToString();

??? 現(xiàn)在完成我們主要要做的事情:如何去分頁。對于分頁,首先我們需要所有記錄的總數(shù)量。能從reader中得到這個數(shù)量。

??????objReader.NextResult();
????????
int?intTotalRecords?=?0;
????????
if?(objReader.Read())?{
????????????intTotalRecords?
=int.Parse(objReader[0].ToString());
????????}

???? 現(xiàn)在,intTotalRecords變量包含了記錄的總數(shù)量。第二個任務是去找頁碼數(shù)量。如下所示:

代碼

???? 現(xiàn)在我們必須去找每一頁的開始的一條記錄和最后的一條記錄。我們假設顯示在頁碼列表中包含5頁。 因此用戶能獲得First和Previous按鈕,接下來是下5頁的頁碼按鈕,還有Next和Last按鈕。

代碼

??? 現(xiàn)在,我們要能通過頁的索引和剩余的記錄數(shù)目來隱藏和禁用First, Previous, Next, 和Last button。

代碼

??? 現(xiàn)在,我們能添加一個頁數(shù),它從第一頁到最后一頁。?

代碼

??? 在實現(xiàn)了分頁的HTML之后,在protected類型的字符串strPages中存儲StringBuilder類型的值。分頁就是就是如果頁數(shù)超過一頁,就僅僅顯示一頁。

代碼

???? 如果使用這個方法,你不需要任何的數(shù)據(jù)源控件。我們創(chuàng)建和管理列表和分頁的HTML。這項技術(shù)在你的頁面上將給你帶來最大的靈活性。

參考原文:http://www.codeproject.com/KB/aspnet/custompagingandlisting.aspx



本文轉(zhuǎn)自麒麟博客園博客,原文鏈接:http://www.cnblogs.com/zhuqil/archive/2010/01/02/custompagingandlisting.html,如需轉(zhuǎn)載請自行聯(lián)系原作者

總結(jié)

以上是生活随笔為你收集整理的超级简单:在你的ASP.NET页面自定义列表和分页的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。