using System; using System.Web.UI; using System.Web.UI.WebControls; namespace yaf.controls { /// /// Summary description for Pager. /// public class Pager : BaseControl, System.Web.UI.IPostBackEventHandler { public Pager() { this.Load += new EventHandler(Pager_Load); } private void Pager_Load(object sender,EventArgs e) { } protected override void Render(HtmlTextWriter output) { if(LinkedPager!=null) { Pager linkedPager = (Pager)Parent.FindControl(LinkedPager); if(linkedPager==null) throw new Exception(string.Format("Failed to link pager to '{0}'.",LinkedPager)); linkedPager.Render(output); return; } if(PageCount<2) return; output.WriteLine(""); output.WriteLine("{0:N0} pages:",PageCount); int iStart = CurrentPageIndex - 6; int iEnd = CurrentPageIndex + 7; if(iStart<0) iStart = 0; if(iEnd>PageCount) iEnd = PageCount; if(iStart>0) output.WriteLine("First ...",Page.ClientScript.GetPostBackClientHyperlink(this,"0")); for(int i=iStart;i{1}", Page.ClientScript.GetPostBackClientHyperlink( this, i.ToString() ), i + 1 ); } if(iEndLast", Page.ClientScript.GetPostBackClientHyperlink( this, ( PageCount - 1 ).ToString() ) ); output.WriteLine(""); } public int Count { get { if(ViewState["Count"]!=null) return (int)ViewState["Count"]; else return 0; } set { ViewState["Count"] = value; } } public int CurrentPageIndex { get { if(ViewState["CurrentPageIndex"]!=null) return (int)ViewState["CurrentPageIndex"]; else return 0; } set { ViewState["CurrentPageIndex"] = value; } } public int PageSize { get { if(ViewState["PageSize"]!=null) return (int)ViewState["PageSize"]; else return 20; } set { ViewState["PageSize"] = value; } } public int PageCount { get { return (int)Math.Ceiling((double)Count/PageSize); } } public string LinkedPager { get { return (string)ViewState["LinkedPager"]; } set { ViewState["LinkedPager"] = value; } } #region IPostBackEventHandler public event EventHandler PageChange; public void RaisePostBackEvent(string eventArgument) { if(PageChange!=null) { CurrentPageIndex = int.Parse(eventArgument); PageChange(this,new EventArgs()); } } #endregion } }