天天看點

Web之真假分頁

在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