using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace AspNetPageControl
{
[DefaultProperty("Text")]
[ToolboxData("<{0}:AspNetPage runat=server></{0}:AspNetPage>")]
public class AspNetPage :CompositeControl
{
[Bindable(true)]
[Category("Appearance")]
[DefaultValue("")]
[Localizable(true)]
public string Text
{
get
{
String s = (String)ViewState["Text"];
return ((s == null) ? String.Empty : s);
}
set
{
ViewState["Text"] = value;
}
}
[Bindable(true)]
[Category("Appearance")]
[DefaultValue("5")]
[Localizable(true)]
public int? PageSize
{
get
{
int? s = (int?)ViewState["PageSize"];
return ((s == null) ? 15 : s);
}
set
{
ViewState["PageSize"] = value;
}
}
[Bindable(true)]
[Category("Appearance")]
[DefaultValue("10")]
[Localizable(true)]
public int? PageCount
{
get
{
int? s = (int?)ViewState["PageCount"];
return ((s == null) ? 0 : s);
}
set
{
ViewState["PageCount"] = value;
}
}
[Bindable(true)]
[Category("Appearance")]
[DefaultValue("0")]
[Localizable(true)]
public int? CurrentPageIndex
{
get
{
int? s = (int?)ViewState["CurrentPageIndex"];
return ((s == null) ? 0 : s);
}
set
{
ViewState["CurrentPageIndex"] = value;
}
}
LinkButton FrontPage;
LinkButton PrePage;
LinkButton NextPage;
LinkButton LastPage;
protected override void RecreateChildControls()
{
if (this.ChildControlsCreated == false)
base.RecreateChildControls();
}
protected override void CreateChildControls()
{
this.Controls.Clear();
FrontPage = new LinkButton();
FrontPage.ID = "FrontPage";
FrontPage.Text = "首页";
PrePage = new LinkButton();
PrePage.ID = "PrePage";
PrePage.Text = "上一页";
NextPage = new LinkButton();
NextPage.ID = "NextPage";
NextPage.Text = "下一页";
LastPage = new LinkButton();
LastPage.ID = "LastPage";
LastPage.Text = "尾页";
this.Controls.Add(FrontPage);
this.Controls.Add(PrePage);
this.Controls.Add(NextPage);
this.Controls.Add(LastPage);
this.ChildControlsCreated = true;
}
public delegate void AspNetPageEventHandler(object sender, AspNetPageEventArgs e);
[Category("Action"),Description("翻页事件")]
private new static readonly object EventPageIndexChanged = new object();
public event AspNetPageEventHandler PageIndexChanged
{
add { base.Events.AddHandler(AspNetPage.EventPageIndexChanged, value); }
remove { base.Events.RemoveHandler(AspNetPage.EventPageIndexChanged,value); }
}
public void OnPageIndexChanged(AspNetPageEventArgs e)
{
AspNetPageEventHandler handler = (AspNetPageEventHandler)base.Events[EventPageIndexChanged];
if(handler!=null)
{
handler(this,e);
}
}
{
bool handler = false;
LinkButton lbtn = (LinkButton)source;
AspNetPageEventArgs e = new AspNetPageEventArgs();
if (lbtn.ID == "FrontPage")
{
if (this.CurrentPageIndex != 0)
{
this.CurrentPageIndex = 0;
e.CurrentPageIndex = this.CurrentPageIndex;
e.PageCount = this.PageCount;
OnPageIndexChanged(e);
}
handler = true;
}
if (lbtn.ID == "PrePage")
{
if (this.CurrentPageIndex != 0)
{
this.CurrentPageIndex = this.CurrentPageIndex - 1;
e.CurrentPageIndex = this.CurrentPageIndex;
e.PageCount = this.PageCount;
e.PageSize = this.PageSize;
OnPageIndexChanged(e);
}
handler=true;
}
if (lbtn.ID == "NextPage")
{
if (this.CurrentPageIndex != this.PageSize - 1)
{
this.CurrentPageIndex = this.CurrentPageIndex + 1;
e.CurrentPageIndex = this.CurrentPageIndex;
e.PageCount = this.PageCount;
e.PageSize = this.PageSize;
OnPageIndexChanged(e);
}
handler = true;
}
if (lbtn.ID == "LastPage")
{
if (this.CurrentPageIndex != this.PageSize - 1)
{
this.CurrentPageIndex = this.PageSize - 1;
e.CurrentPageIndex = this.CurrentPageIndex;
e.PageCount = this.PageCount;
e.PageSize = this.PageSize;
OnPageIndexChanged(e);
}
handler=true;
}
return handler || base.OnBubbleEvent(source, args);
}
protected override void RenderContents(HtmlTextWriter output)
{
output.Write("<table>");
output.Write("<tr>");
output.Write("<td>");
FrontPage.RenderControl(output);
output.Write("</td>");
output.Write("<td>");
PrePage.RenderControl(output);
output.Write("</td>");
output.Write("<td>");
NextPage.RenderControl(output);
output.Write("</td>");
output.Write("<td>");
LastPage.RenderControl(output);
output.Write("</td>");
output.Write("</tr>");
output.Write("</table>");
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace AspNetPageControl
{
public class AspNetPageEventArgs:System.EventArgs
{
public AspNetPageEventArgs()
{
}
public int? PageSize { get; set; }
public int? CurrentPageIndex { get; set; }
public int? PageCount { get; set; }
}
}