日期:2014-05-16 浏览次数:20916 次
分页控件,大家应该都比较熟悉了。但是一直以来分页控件都给我一个很郁闷的地方,几乎都是URL传值,让人很郁闷。
如果我的是高级查询,里面的值有很多,那写死个人。同时对系统的请求也是一个考验。于是我写了这个分页控件。同时支持24种分页样式。
代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
using System.Web.UI.HtmlControls;
namespace MyControl
{
[DefaultProperty("Text")]
[ToolboxData("<{0}:DataPager runat=server></{0}:DataPager>")]
public class DataPager : WebControl, INamingContainer, IPostBackEventHandler
{
public event EventHandler PagerOnclick
{
add
{
Events.AddHandler(this, value);
}
remove
{
Events.RemoveHandler(this, value);
}
}
protected void _PagerClick(object sender, EventArgs e)
{
EventHandler hd = (EventHandler)base.Events[this];
if (hd != null)
{
hd(sender, e);
}
}
public void RaisePostBackEvent(string Index)
{
//Label lbl = (Label)this.FindControl("lbl");
//lbl.Text += "自己的事件:" + Index;
}
void btn_Click(object sender, EventArgs e)
{
try
{
int pageIndex = int.Parse(((sender) as LinkButton).Text);
this.PageIndex = pageIndex;
_PagerClick(sender, e);
}
catch (Exception) { }
}
/// <summary>
/// 当前页数
/// </summary>
public int PageIndex
{
get { return int.Parse(ViewState["PageIndex"] == null ? "1" : ViewState["PageIndex"].ToString()); }
set
{
ViewState["PageIndex"] = value;
CreateChildControls();
}
}
/// <summary>
/// 总的页数
/// </summary>
public int TotalPage
{
get { return int.Parse(ViewState["TotalPage"] == null ? "1" : ViewState["TotalPage"].ToString()); }
set { ViewState["TotalPage"] = value; }
}
/// <summary>
/// 总的记录数
/// </summary>
public int TotalRecord
{
get { return int.Parse(ViewState["TotalRecord"] == null ? "0" : ViewState["TotalRecord"].ToString()); }
set { ViewState["TotalRecord"] = value; }
}
/// <summary>
/// 每页数据大小
/// </summary>
public int PageSize
{
get { return int.Parse(ViewState["PageSize"] == null ? "0" : ViewState["PageSize"].ToString()); }
set { ViewState["PageSize"] = value; }
}
/// <summary>
/// 自定义说明
/// </summary>
public string CustomText
{
get { return ViewState["CustomText"] == null ? "" : ViewState["CustomText"].ToString(); }
set { ViewState["CustomText"] = value; }
}
void NextPager(object send, EventArgs e)
{
this.PageIndex = this.PageIndex + 10 > this.TotalPage ? this.TotalPage : this.PageIndex + 10;
}
void PrePager(object send, EventArgs e)
{
this.PageIndex = this.PageIndex-10 > 1 ? this.PageIndex - 10 : 1;
}
void MaxPager(object send, EventArgs e)
{
this.PageIndex = this.TotalPage;
}
protected override void CreateChildControls()
{
this.Controls.Clear();
HtmlGenericControl div = new HtmlGenericControl(&q