天天看點

AspNetPager實作真分頁+多種樣式

真假分頁

  分頁是Web應用程式中最常用到的功能之一。當從資料庫中擷取的記錄遠遠超過界面承載能力的時候,使用分頁可以使我們的界面更加美觀,更加的使用者友好。分頁包括兩種類型:真分頁和假分頁。 其中假分頁就是從資料庫中擷取全部的想要檢索的記錄數,然後再顯示給使用者;而真分頁則是根據頁面的情況,檢索特定頁面要求内的記錄。當然如果資料庫中記錄較少的話,真假分頁的效果是不明顯的;但是當資料庫中記錄遠遠超過我們所能了解的範圍後,用假分頁進行顯示資料,則會造成時間和空間上的問題,系統的可通路性大打折扣;相對而言,使用真分頁,檢索特定頁面要求的記錄數目,則大大提高了系統的效率和可通路性;

AspNetPager控件

  牛腩老師給我們提供了一種實作記錄真分頁的思路,在視訊中并沒有具體的代碼實作。而我現在就和大家來共同學習一下牛腩老師的真分頁功能;首先:下載下傳AspNetPager控件(點選下載下傳),下載下傳好之後至于具體的如何引用DLL控件,如何添加控件到工具箱,這裡就不贅述了,以前的VB學習已經涉及到過,實在不知道的可以百度哈~~~該控件幾個重要的屬性:

alwaysshow:總是顯示分頁控件;

PageSize:指定每頁顯示的記錄數;

custominfosectionwidth:使用者自定義資訊區的寬度;

custominfotextalign:使用者自定義資訊區的對齊方式;

firstpagetext:第一頁按鈕上顯示的文本;

horizontalalign:内容水準對齊方式;

lastpagetext:最後頁按鈕上顯示的文本;

navigationbuttontype:第一頁、下一頁、最後一頁按鈕的類型;

nextpagetext:下一頁按鈕上顯示的文本;

pageindexboxtype:訓示頁索引框的顯示類型:有TextBOX和dropdownlist兩種;

pagingbuttonspacing:導航頁按鈕的間距;

prevpagetext:上一頁按鈕的顯示的文本;

showcustominfosection:顯示目前頁和總頁資訊,預設為不顯示,值為LEFT時将顯示在頁索引前,為right時顯示在頁索引後;

showpageindexbox:指定頁索引文本框或下拉框的顯示方式;

textafterpageindexbox:指定頁索引文本框或下拉框後的文本;

UrlPaging:是夠使用URL傳遞分頁的方式來分頁;

textbeforepageindexbox:指定頁索引文本框或下拉框前面顯示的文本;

width:該控件的寬度;

CustomInfoHTML:指定要顯示在使用者自定義資訊區的使用者自定義HTML資訊文本

當我們添加引用完畢,并添加控件到工具箱後,在界面拖入AspNetPager控件,然後看代碼實作:

代碼實作:

SQL存儲過程:

USE [newssystem]
GO
/****** Object:  StoredProcedure [dbo].[SelectPage]    Script Date: 08/24/2013 12:31:03 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
   CREATE PROCEDURE [dbo].[SelectPage]

   @startIndex integer,
   @endIndex integer
AS
BEGIN
   SET NOCOUNT ON;
      with temptbl as (  SELECT ROW_NUMBER() OVER (ORDER BY id desc)AS 行号, *from news )
      SELECT * FROM temptbl where 行号 between @startIndex and @endIndex
END
GO
           

D層執行存儲過程

<pre name="code" class="csharp">#region  新聞分頁	        /// <summary>
	        /// 根據頁數來實作新聞分頁
	        /// </summary>
	        /// <param name="startIndex">開始值</param>
	        /// <param name="endIndex">結束值</param>
	        /// <returns>datatable</returns>
	        public DataTable SelectPage(int startIndex, int endIndex)
	        {
	            DataTable dt = new DataTable();
	            string cmdText = "SelectPage";
	
	            SqlParameter[] paras = new SqlParameter[] { 
	                new SqlParameter("@startIndex", startIndex ),
	                new SqlParameter("@endIndex", endIndex)
	            };
	
	            dt = sqlhelper.ExecuteQuery(cmdText, paras, CommandType.StoredProcedure);
	            return dt;
	        }
 #endregion
           

B層分頁邏輯:

#region  新聞分頁
	        /// <summary>
	        /// 新聞分頁
	        /// </summary>
	        /// <param name="startIndex">記錄開始值</param>
	        /// <param name="endIndex">記錄結束值</param>
	        /// <returns></returns>
	        public DataTable  SelectPage(int startIndex, int endIndex)
	        {
	            return ndao.SelectPage(startIndex, endIndex);
	        }
	        #endregion 
           

Web層實作:

protected void Page_Load(object sender, EventArgs e)
		        {
		            AspNetPager1.RecordCount = new NewsManager().SelectAll().Rows.Count;
	                    int startIndex = AspNetPager1.StartRecordIndex;
	                    int endIndex = AspNetPager1.EndRecordIndex;
	                    repNews.DataSource = new NewsManager().SelectPage(startIndex, endIndex);
	                    repNews.DataBind();
		        }
		
		        protected void AspNetPager1_PageChanged(object sender, EventArgs e)
		        {
		            int startIndex = AspNetPager1.StartRecordIndex;
		            int endIndex = AspNetPager1.EndRecordIndex;
		            repNews.DataSource = new NewsManager().SelectPage(startIndex, endIndex);
		            repNews.DataBind();
		        }