在web設計中一個無法避免的問題就是分頁顯示。當資料量特别大的時候,我們不可能将全部的資料都在一個頁面進行顯示,假設這樣将嚴重影響到它的美觀性。是以在這個時候,分頁顯示則成為了我們的大功臣。當然分頁也分兩種,一種是真分頁,一種是假分頁,即:
假分頁:從資料庫中選擇全部記錄後在分頁。
真分頁:從資料庫中選擇目前頁的記錄
首先先來說一下自帶的分頁功能(假分頁):
在.net中的GridView控件就自帶分頁顯示功能,當然操作非常easy,總共分成兩步:
1、在界面加入�一個GridView控件,設定其屬性AllowPaging的值為True,PageSize的值為n( n 為每一頁顯示記錄的條數),這樣就設定成功了。
2、将資料綁定到GridView控件上面就能夠了。詳細例如以下:
protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { //頁面第一次載入時調用綁定資料方法</span> BindNews(); } } /// <summary> ///綁定資料方法 /// </summary></span> private void BindNews() { //查詢資料,并将資料綁定到GridView1上面</span> GridView1.DataSource = newNewsManager().SelectAll(); GridView1.DataBind(); } /// <summary> /// 換頁時的資料綁定功能 /// </summary> /// <paramname="sender"></param> /// <paramname="e"></param></span> protected voidGridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) { //擷取目前頁的索引</span> GridView1.PageIndex = e.NewPageIndex; //又一次進行資料綁定</span> BindNews(); }</span>
複制
通過上面的步驟就能夠輕松得到分頁的資料了。盡管能夠實作想要的結果,可是還存在着一些問題,比方上面的綁定資料方法中綁定的是所有的新聞,每次運作的時候都會查詢資料庫中所有的記錄,當記錄達到一定量大的時候比方50萬條,100萬條等等,這個時候綁定的時候會是多麼長的時間。是以将上面的情況定義成為假分頁。與其相比,真分頁則非常好的攻克了這個問題,以下再來見證一下真分頁的奇妙吧:
在分頁之前要進行資料查詢,是以在這我建立了一個存儲過程,用于查詢分頁資料,詳細例如以下:
<span style="font-size:18px;"><span style="white-space:pre"> </span>ALTER PROCEDURE[dbo].[aspPageChoose] </span>@startPageint, </span>@endPageint </span>AS </span>BEGIN ----建立暫時表,用于儲存</span> </span>withtemptbl as ( </span>selectROW_NUMBER() OVER (ORDER BY id desc)as rowNum ,* from news </span>) </span>select* from temptbl where rowNum between@startPage and @endPage </span>END</span>
複制
其次是U層的建立,在界面上面放置兩個控件,各自是AspNetPage和GridView,将這兩個控件每頁顯示的個數設定成相應的數值,最後就是對資料的綁定,進行顯示,例如以下
protected voidPage_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { //頁面第一次載入時調用綁定資料方法</span> anp.RecordCount = <span style="color:#ff0000;">新聞的總數量</span>; int startpage = 1; int endpage =3; DataTable dt = newNewsManager().SelectAspNetPage(startpage, endpage); GridView1.PageSize =endpage - startpage + 1; GridView1.DataSource = dt; GridView1.DataBind(); } } //進行換頁顯示資料</span> protected voidanp_PageChanged(object sender, EventArgs e) { int startpage =anp.StartRecordIndex; int endpage = anp.EndRecordIndex; DataTable dt = newNewsManager().SelectAspNetPage(startpage, endpage); GridView1.PageSize = endpage -startpage + 1; GridView1.DataSource = dt; GridView1.DataBind(); }</span>
複制
總結:常說對照出真知,通過上面的對照,能夠非常清楚的展示,真分頁為我們打開了友善之門,除此之外還給我們程式設計帶來了巨大的優點。上面的純屬自己摸索而來,如有什麼不足,還請各位指點指點。
釋出者:全棧程式員棧長,轉載請注明出處:https://javaforall.cn/119092.html原文連結:https://javaforall.cn