8,834
社区成员
发帖
与我相关
我的任务
分享
using System;
using System.Data;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Collections.Specialized;
namespace CreateWebControl
{
//定义一个事件类,用于记录一组LinkButton中被点击的LinkButton是哪一个.
public class EventLinkButtonArgs : EventArgs
{
private int _ClickedIndex;
public EventLinkButtonArgs()
{
}
public int ClickedIndex
{
get
{
return this._ClickedIndex;
}
set
{
this._ClickedIndex = value;
}
}
}
//定义一个委托,用于处理数字链接.
public delegate void LnkBtnListEventHandler(object sender, EventLinkButtonArgs e);
public event LnkBtnListEventHandler RegisterLnkBtnListClick;
public class Pager : CompositeControl
{
private Label _lblCurrentPage;
private Label _lblAllPage;
private TextBox _txtToPage;
private Button _btnToPage;
private Button _btnNext;
private Button _btnPrev;
private LinkButton _lnkToPage;
private GridView _GvdControl;
private DataTable _DtControl;
private int _NumPage;
private int _PageLnkTo;
private int _Cellspacing;
private int _Cellpadding;
#region 分页控件所需的属性
[Category("Layout")]
[Description("呈现的样式")]
public PagerLayout PgLayout
{
get
{
return this._PgLayout;
}
set
{
this._PgLayout = value;
}
}
[Category("Data")]
[Description("绑定使用控件分页的GridView")]
public GridView ObjectGridView
{
get
{
return _GvdControl;
}
set
{
_GvdControl = value;
}
}
[Category("Data")]
[Description("GridView的数据源DataTable")]
public DataTable DtControl
{
get
{
return _DtControl;
}
set
{
_DtControl = value;
}
}
[DefaultValue(3)]
[Category("Appearance")]
[Description("显示链接的页码数")]
public int NumPage
{
get
{
return this._NumPage;
}
set
{
this._NumPage = value;
}
}
#endregion
public Pager()
{
this._NumPage = 3;
this._PgLayout = PagerLayout.Horizontal;
this._PageNowIndex = 0;
this._AutoPostBack = false;
if (this.ObjectGridView == null)
{
this._GvdControl = new GridView();
}
if (this.DtControl == null)
{
this._DtControl = new DataTable();
}
}
protected override void CreateChildControls()
{
this.Controls.Clear();
_txtToPage = new TextBox();
_txtToPage.ID = "txtToPage";
_txtToPage.Width = Unit.Pixel(Convert.ToInt32(this.Width.Value * 0.1));
_txtToPage.Height = this.Height;
this.Controls.Add(this._txtToPage);
_btnToPage = new Button();
_btnToPage.ID = "btnToPage";
_btnToPage.Text = "转到";
_btnToPage.Width = Unit.Pixel(Convert.ToInt32(this.Width.Value * 0.1));
_btnToPage.Height = this.Height;
this._btnToPage.Click += new EventHandler(btnToPage_Click);
this.Controls.Add(this._btnToPage);
_btnNext = new Button();
_btnNext.ID = "btnNext";
_btnNext.Text = "下一页";
_btnNext.Width = Unit.Pixel(Convert.ToInt32(this.Width.Value * 0.1));
_btnNext.Height = this.Height;
this._btnNext.Click += new EventHandler(btnNext_Click);
this.Controls.Add(this._btnNext);
_btnPrev = new Button();
_btnPrev.ID = "btnPrev";
_btnPrev.Text = "上一页";
_btnPrev.Width = Unit.Pixel(Convert.ToInt32(this.Width.Value * 0.1));
_btnPrev.Height = this.Height;
this._btnPrev.Click += new EventHandler(btnPrev_Click);
this.Controls.Add(this._btnPrev);
for (int i = 1; i <= this._NumPage; i++)
{
_lnkToPage = new LinkButton();
_lnkToPage.ID = "lnkBtn" + i.ToString();
_lnkToPage.Text = i.ToString();
_lnkToPage.Height = this.Height;
_lnkToPage.Click += new EventHandler(lnkToPage_Click);
this.Controls.Add(this._lnkToPage);
}
_lblCurrentPage = new Label();
_lblCurrentPage.ID = "lblCurrentPage";
_lblCurrentPage.Text = "当前页:" + this.ObjectGridView.PageIndex.ToString();
_lblCurrentPage.Width = Unit.Pixel(Convert.ToInt32(this.Width.Value * 0.15));
_lblCurrentPage.Height = this.Height;
this.Controls.Add(this._lblCurrentPage);
_lblAllPage = new Label();
_lblAllPage.ID = "lblAllPage";
_lblAllPage.Text = "总页数:" + this.ObjectGridView.PageCount.ToString();
_lblAllPage.Width = Unit.Pixel(Convert.ToInt32(this.Width.Value * 0.15));
_lblAllPage.Height = this.Height;
this.Controls.Add(this._lblAllPage);
this.ChildControlsCreated = true;
}
protected void FnBindGridView()
{
this.ObjectGridView.DataSource = this.DtControl;
this.ObjectGridView.DataBind();
}
protected void lnkToPage_Click(object sender, EventArgs e)
{
EventLinkButtonArgs ex = new EventLinkButtonArgs();
LinkButton lnkBtn = new LinkButton();
lnkBtn = sender as LinkButton ?? new LinkButton();
ex.ClickedIndex = Convert.ToInt32(lnkBtn.Text);
this.lnkToPage_RegisterLnkBtnClick(sender, ex);
}
protected void lnkToPage_RegisterLnkBtnClick(object sender, EventLinkButtonArgs e)
{
if (this.RegisterLnkBtnListClick != null)
{
this.RegisterLnkBtnListClick(this, e);
}
else
{
this.ObjectGridView.PageIndex = e.ClickedIndex;
}
FnBindGridView();
}
protected void btnPrev_Click(object sender, EventArgs e)
{
if (this.ObjectGridView.PageIndex > 0 && this.ObjectGridView.PageIndex <= this.ObjectGridView.PageCount)
{
this.ObjectGridView.PageIndex--;
}
else
{
}
FnBindGridView();
}
protected void btnNext_Click(object sender, EventArgs e)
{
if (this.ObjectGridView.PageIndex >= 0 && this.ObjectGridView.PageIndex <= this.ObjectGridView.PageCount)
{
this.ObjectGridView.PageIndex++;
}
else
{
}
FnBindGridView();
}
protected void btnToPage_Click(object sender, EventArgs e)
{
if (Convert.ToInt32(this._txtToPage.Text.ToString()) <= this.ObjectGridView.PageCount && Convert.ToInt32(this._txtToPage.Text.ToString()) >= 0)
{
this.ObjectGridView.PageIndex = Convert.ToInt32(this._txtToPage.Text.ToString());
}
else
{
}
FnBindGridView();
}
protected override void Render(HtmlTextWriter writer)
{
writer.AddAttribute(HtmlTextWriterAttribute.Cellspacing, "0");
writer.AddAttribute(HtmlTextWriterAttribute.Cellpadding, "0");
writer.AddAttribute(HtmlTextWriterAttribute.Border, "0");
writer.RenderBeginTag(HtmlTextWriterTag.Table);
writer.RenderBeginTag(HtmlTextWriterTag.Tr);
writer.RenderBeginTag(HtmlTextWriterTag.Td);
this._lblAllPage.RenderControl(writer);
writer.RenderEndTag();
writer.RenderBeginTag(HtmlTextWriterTag.Td);
this._lblCurrentPage.RenderControl(writer);
writer.RenderEndTag();
writer.RenderBeginTag(HtmlTextWriterTag.Td);
this._btnPrev.RenderControl(writer);
writer.RenderEndTag();
for (int i = 1; i <= this._NumPage; i++)
{
writer.RenderBeginTag(HtmlTextWriterTag.Td);
this.Controls[i + 3].RenderControl(writer);
writer.RenderEndTag();
}
writer.RenderBeginTag(HtmlTextWriterTag.Td);
this._btnNext.RenderControl(writer);
writer.RenderEndTag();
writer.RenderBeginTag(HtmlTextWriterTag.Td);
this._txtToPage.RenderControl(writer);
writer.RenderEndTag();
writer.RenderBeginTag(HtmlTextWriterTag.Td);
this._btnToPage.RenderControl(writer);
writer.RenderEndTag();
writer.RenderEndTag();
writer.RenderEndTag();
}
}
}
}