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
}
}