Click here to Skip to main content
15,896,359 members
Articles / Web Development / ASP.NET

How to create customized Pagers for ASP.NET applications

Rate me:
Please Sign up or sign in to vote.
4.48/5 (18 votes)
29 Apr 20045 min read 96.7K   2.8K   56  
Demonstrate how to create custom pagers that can attahced to a DataGrid.
using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
using System.Collections;

namespace WebExpertCTL.Web.UI.Pagers
{
	[ToolboxData("<{0}:PageNumbersPager runat=server></{0}:PageNumbersPager>"), Browsable(true)]
	public class PageNumbersPager : PostBackEventHandlerPager
	{
		#region Variables Declartion

		// Local variables to hold the page numbers layout & style
		private int            m_Columns;
		private int            m_MaxAtOnce;
		private string         m_PageNumbersCSSClass;
		private string         m_PageNumbersCurrentPageCSSClass;


		private const int cDEF_COLUMNS      = 0;
		private const int cDEF_MAXATONCE    = 0;
		private const string cDEF_PAGENUMBERS_CSSCLASS  = "";
		private const string cDEF_PAGENUMBERS_CURRENTPAGE_CSSCLASS  = "";
		
	#endregion
		
		#region Constructor
		
		public PageNumbersPager()
		{
			m_Columns						 = cDEF_COLUMNS;
			m_PageNumbersCSSClass			 = cDEF_PAGENUMBERS_CSSCLASS;
			m_PageNumbersCurrentPageCSSClass = cDEF_PAGENUMBERS_CURRENTPAGE_CSSCLASS;
			m_MaxAtOnce						 = cDEF_MAXATONCE;
		}

		#endregion

		#region Control's State Management

		protected override void LoadViewState(object savedState)
		{
			base.LoadViewState (savedState);

			m_Columns						  = (int)ViewState["PageNumbersColumns"];
			m_MaxAtOnce						  = (int)ViewState["PageNumbersMaxAtOnce"];
			m_PageNumbersCSSClass			  = (string)ViewState["PageNumbersCSSClass"];
			m_PageNumbersCurrentPageCSSClass  = (string)ViewState["PageNumbersCurrentPageCSSClass"];
		}
		
		protected override object SaveViewState()
		{
			ViewState["PageNumbersColumns"]				 = m_Columns;
			ViewState["PageNumbersMaxAtOnce"]			 = m_MaxAtOnce;
			ViewState["PageNumbersCSSClass"]			 = m_PageNumbersCSSClass;
			ViewState["PageNumbersCurrentPageCSSClass"]  = m_PageNumbersCurrentPageCSSClass;

			return base.SaveViewState ();
		}

#endregion
		
		#region Page Numbers Style & Layout properties
		
		[Category("Page Numbers"),
		DefaultValue(cDEF_COLUMNS),
		Description("Get/Set the numbers of columns to use in each row(0 - unlimited).")]
		public int PageNumbersColumns
		{
			get{return m_Columns;}
			set{m_Columns = value;}
		}
		
		/*
		[Category("Page Numbers"),
		DefaultValue(cDEF_MAXATONCE),
		Description("Get/Set the maximum page numbers to display at once.")]
		public int PageNumbersMaxAtOnce
		{
			get{return m_MaxAtOnce;}
			set{m_MaxAtOnce = value;}
		}
		*/
		[Category("Page Numbers"),
		DefaultValue(cDEF_PAGENUMBERS_CSSCLASS),
		Description("Get/Set the CSS class of the page numbers")]
		public string PageNumbersCSSClass
		{
			get{return m_PageNumbersCSSClass;}
			set{m_PageNumbersCSSClass = value;}
		}

		[Category("Page Numbers"),
		DefaultValue(cDEF_PAGENUMBERS_CURRENTPAGE_CSSCLASS),
		Description("Get/Set the CSS class of the select page number")]
		public string PageNumbersCurrentPageCSSClass
		{
			get{return m_PageNumbersCurrentPageCSSClass;}
			set{m_PageNumbersCurrentPageCSSClass = value;}
		}
		#endregion
	
		#region Rendering methods
		
		public override void RenderBeginTag(HtmlTextWriter writer)
		{
			base.AddAttributesToRender(writer);
			writer.RenderBeginTag(HtmlTextWriterTag.Table);
		}
		
		public override void RenderEndTag(HtmlTextWriter writer)
		{
			writer.RenderEndTag();
		}
		
		protected override void RenderContents(HtmlTextWriter writer)
		{
			int Cols = 0;

			writer.RenderBeginTag(HtmlTextWriterTag.Tr);
			for(int i=1; i<=this.PageCount; i++)
			{
				writer.RenderBeginTag(HtmlTextWriterTag.Td);
				
				if(i == CurrentPageNumber && m_PageNumbersCurrentPageCSSClass.Length > 0)
				{
					writer.AddAttribute(HtmlTextWriterAttribute.Class, m_PageNumbersCurrentPageCSSClass);
				}
				else if(m_PageNumbersCSSClass.Length > 0)
				{
					writer.AddAttribute(HtmlTextWriterAttribute.Class, m_PageNumbersCSSClass);
				}
				writer.AddAttribute(HtmlTextWriterAttribute.Href, String.Format("javascript:{0}", GetPostBackHrefString(i)));
				writer.RenderBeginTag(HtmlTextWriterTag.A);
				writer.Write(i);
				writer.RenderEndTag();
				writer.RenderEndTag();

				if(++Cols == m_Columns)
				{
					Cols = 0;
					writer.RenderEndTag();
					writer.RenderBeginTag(HtmlTextWriterTag.Tr);
				}
			}
			writer.RenderEndTag();
		}
		#endregion
	}
}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here


Written By
Web Developer
Israel Israel
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions