可能大家有用得着的地方发出来一起研究下代码如下
Pagercs 服务器控件源代码
using System;
using SystemWeb;
using SystemWebUI;
using SystemWebUIWebControls;
using SystemComponentModel;
namespace C_Pager
{
public class Pager : Control INamingContainer
{
[Description(操作员选择不同页时产生的页更新事件通过此事件处理把旧页面显示信息更新到选择页对应的数据信息)]
public event EventHandler PageChanged;
private int rectotal = ;
private int pagesize = ;
private int curpage = ;
private int lang = ;
private int pagetotal = ;
private string firstpagetext =<FONT face=webdings></FONT>;
private string prevpagetext = <FONT face=webdings></FONT>;
private string nextpagetext = <FONT face=webdings></FONT>;
private string lastpagetext = <FONT face=webdings>:</FONT>;
protected virtual void temp_Click(object sender EventArgs e)
{
if (PageChanged != null)
{
PageChanged(thise);
}
}
Pager控件使用帮助及参数说明#region Pager控件使用帮助及参数说明
/**//*
本控件带有三个自定义属性和一个方法具体如下:
属性:
RecTotal 记录总数 默认值:
PageSize 每页记录数 默认值:
CurPage 当前页 默认值:
Lang 版本语言 默认值: 注:为中文版为英文版
方法:
PagerBind 绑定当前自定义控件如不绑定该控件则不能显示到页面上
*/
#endregion
控件属性列表#region 控件属性列表
[Category(分页控制)Description(数据集所有页记录总数)]
public int RecTotal
{
get { return rectotal; }
set { rectotal = value; }
}
[Category(分页控制)Description(每页显示记录数量)]
public int PageSize
{
get { return pagesize; }
set { pagesize = value; }
}
[Category(分页控制)Description(当前显示页)]
public int CurPage
{
get { return curpage; }
set { curpage = value; }
}
[Category(分页控制)Description(数据集页总数)]
public int PageTotal
{
set { pagetotal = value; }
}
[Category(分页控制)Description(翻页条显示语言别0为中文1为英文)]
public int Lang
{
get { return lang; }
set { lang = value; }
}
[Category(分页控制)Description(首页按钮文本例如可用第一页)]
public string FirstPageText //
{
get { return firstpagetext; }
set { firstpagetext = value; }
}
[Category(分页控制)Description(前页按钮文本例如可用上一页)]
public string PrevPageText
{
get { return prevpagetext; }
set { prevpagetext = value; }
}
[Category(分页控制)Description(下页按钮文本例如可用下一页)]
public string NextPageText
{
get { return nextpagetext; }
set { nextpagetext = value; }
}
[Category(分页控制)Description(尾页按钮文本例如可用最后页)]
public string LastPageText
{
get { return lastpagetext; }
set { lastpagetext = value; }
}
#endregion
protected override void CreateChildControls()
{
ViewState[FirstPageText]= firstpagetext;
ViewState[PrevPageText] = prevpagetext;
ViewState[NextPageText] = nextpagetext;
ViewState[LastPageText] = lastpagetext;
Label lbl_PageInfo = new Label(); //
lbl_PageInfoText = 尚未绑定;
ControlsAdd(lbl_PageInfo);
LinkButton btn_First = new LinkButton(); //
btn_FirstText = ViewState[FirstPageText]ToString();
ControlsAdd(btn_First);
btn_FirstVisible = false;
btn_FirstClick += new SystemEventHandler(btn_First_Click);
ControlsAdd(new LiteralControl( )); //
LinkButton btn_Pre = new LinkButton(); //
btn_PreText = ViewState[PrevPageText]ToString();
ControlsAdd(btn_Pre);
btn_PreVisible = false;
btn_PreClick += new SystemEventHandler(btn_Pre_Click);
ControlsAdd(new LiteralControl( )); //
LinkButton btn_Next = new LinkButton(); //
btn_NextText = ViewState[NextPageText]ToString();
ControlsAdd(btn_Next);
btn_NextVisible = false;
btn_NextClick += new SystemEventHandler(btn_Next_Click);
ControlsAdd(new LiteralControl( )); //
LinkButton btn_Last = new LinkButton(); //
btn_LastText = ViewState[LastPageText]ToString();
ControlsAdd(btn_Last);
btn_LastVisible = false;
btn_LastClick += new SystemEventHandler(btn_Last_Click);
ControlsAdd(new LiteralControl( )); //
Label lbl_ = new Label(); //
lbl_Text = 转到;
lbl_Visible = false;
ControlsAdd(lbl_);
DropDownList drop_CurPage = new DropDownList(); //
drop_CurPageItemsAdd();
ControlsAdd(drop_CurPage);
drop_CurPageAutoPostBack = true;
drop_CurPageVisible = false;
drop_CurPageSelectedIndexChanged += new SystemEventHandler(drop_CurPage_SelectedIndexChanged);
Label lbl_ = new Label(); //
lbl_Text = 页;
lbl_Visible = false;
ControlsAdd(lbl_);
}
protected override void OnPreRender(EventArgs e)
{
if (!PageIsPostBack)
{
StartVar();
PagerBind();
}
}
protected void StartVar() //初始各参数.希望只执行一次
{
ViewState[RecTotal] = rectotal;
ViewState[PageSize] = pagesize;
ViewState[CurPage] = curpage;
ViewState[Lang] = lang ;
ViewState[PageTotal] = pagetotal;
}
相关方法及事件#region 相关方法及事件
public void PagerBind()
{
ViewState[PageTotal]=((int)ViewState[RecTotal]%(int)ViewState[PageSize]>) ? (int)ViewState[RecTotal]/(int)ViewState[PageSize]+ : (int)ViewState[RecTotal]/(int)ViewState[PageSize]; //页总数
if ((int)ViewState[Lang]==)
{
((Label)Controls[])Text=共<font color=red>+ViewState[RecTotal]ToString()+</font>条信息 <font color=red>+ViewState[PageSize]ToString()+</font>条/页 当前<font color=red>+((int)ViewState[CurPage]+)ToString()+</font>/<font color=red>+ViewState[PageTotal]ToString()+</font>页 ;
}
else
{
((Label)Controls[])Text=Total<font color=red>+ViewState[RecTotal]ToString()+</font>Info <font color=red>+ViewState[PageSize]ToString()+</font>/Page Current<font color=red>+((int)ViewState[CurPage]+)ToString()+</font>/<font color=red>+ViewState[PageTotal]ToString()+</font>Page ;
((Label)Controls[])Text = To;
((Label)Controls[])Text = Page;
}
((DropDownList)Controls[])ItemsClear();
int i=;
do
{
((DropDownList)Controls[])ItemsAdd(ConvertToString(i+));
i++;
}
while (i<(int)ViewState[PageTotal]);
((DropDownList)Controls[])SelectedIndex = ((DropDownList)Controls[])ItemsIndexOf(((DropDownList)Controls[])ItemsFindByValue(ConvertToString((int)ViewState[CurPage]+)));
((LinkButton)Controls[])Visible = true;
((LinkButton)Controls[])Visible = true;
((LinkButton)Controls[])Visible = true;
((LinkButton)Controls[])Visible = true;
((Label)Controls[])Visible = true;
((Label)Controls[])Visible = true;
((DropDownList)Controls[])Visible = true;
((LinkButton)Controls[])Enabled = true;
((LinkButton)Controls[])Enabled = true;
((LinkButton)Controls[])Enabled = true;
((LinkButton)Controls[])Enabled = true;
if ((int)ViewState[CurPage]==)
{
((LinkButton)Controls[])Enabled = false;
((LinkButton)Controls[])Enabled = false;
((LinkButton)Controls[])Enabled = true;
((LinkButton)Controls[])Enabled = true;
}
if ((int)ViewState[CurPage]==( (int)ViewState[PageTotal]) )
{
((LinkButton)Controls[])Enabled = true;
((LinkButton)Controls[])Enabled = true;
((LinkButton)Controls[])Enabled = false;
((LinkButton)Controls[])Enabled = false;
}
if (( (int)ViewState[PageTotal]) == )
{
((LinkButton)Controls[])Enabled = false;
((LinkButton)Controls[])Enabled = false;
((LinkButton)Controls[])Enabled = false;
((LinkButton)Controls[])Enabled = false;
}
CurPage = (int)ViewState[CurPage];
RecTotal = (int)ViewState[RecTotal];
PageSize = (int)ViewState[PageSize];
CurPage = (int)ViewState[CurPage];
Lang = (int)ViewState[Lang];
PageTotal = (int)ViewState[PageTotal];
}
private void drop_CurPage_SelectedIndexChanged(object sender SystemEventArgs e)
{
ViewState[CurPage] = ((DropDownList)Controls[])SelectedIndex;
PagerBind();
if (PageChanged != null)
temp_Click(this EventArgsEmpty);
}
private void btn_First_Click(object sender SystemEventArgs e)
{
ViewState[CurPage] = ;
PagerBind();
if (PageChanged != null)
temp_Click(this EventArgsEmpty);
}
private void btn_Pre_Click(object sender SystemEventArgs e)
{
ViewState[CurPage] = (int)ViewState[CurPage];
PagerBind();
if (PageChanged != null)
temp_Click(this EventArgsEmpty);
}
private void btn_Next_Click(object sender SystemEventArgs e)
{
ViewState[CurPage] = (int)ViewState[CurPage]+;
PagerBind();
if (PageChanged != null)
temp_Click(this EventArgsEmpty);
}
private void btn_Last_Click(object sender SystemEventArgs e)
{
ViewState[CurPage] = (int)ViewState[PageTotal];
PagerBind();
if (PageChanged != null)
temp_Click(this EventArgsEmpty);
}
#endregion
}
}
WebFormaspx 自定义分页控件测试页面
具体效果展示页面x
<%@ Page language=c# Codebehind=WebFormaspxcs AutoEventWireup=false Inherits=MyWebControllWebForm %>
<%@ Register TagPrefix=cc Namespace=C_Pager Assembly=C_Pager %>
<!DOCTYPE HTML PUBLIC //WC//DTD HTML Transitional//EN >
<HTML>
<HEAD>
<title>WebForm</title>
<meta content=Microsoft Visual Studio NET name=GENERATOR>
<meta content=C# name=CODE_LANGUAGE>
<meta content=JavaScript name=vs_defaultClientScript>
<meta content= name=vs_targetSchema>
</HEAD>
<body MS_POSITIONING=GridLayout>
<form id=Form method=post runat=server>
<FONT face=宋体>
<cc:pager id=Pager runat=server PageSize=></cc:pager>
<asp:DataGrid id=DataGrid runat=server
Width=px Height=px></asp:DataGrid></FONT></form>
</body>
</HTML>
WebFormaspxcs 测试页面源码
using System;
using SystemCollections;
using SystemComponentModel;
using SystemData;
using SystemDrawing;
using SystemWeb;
using SystemWebSessionState;
using SystemWebUI;
using SystemWebUIWebControls;
using SystemWebUIHtmlControls;
using SystemDataSqlClient;
using SystemDataOleDb;
namespace MyWebControll
{
/**//// <summary>
/// WebForm 的摘要说明
/// </summary>
public class WebForm : SystemWebUIPage
{
protected C_PagerPager Pager;
protected OleDbConnection conn;
protected SystemWebUIWebControlsDataGrid DataGrid;
protected OleDbCommand cmd;
private void Page_Load(object sender SystemEventArgs e)
{
// 在此处放置用户代码以初始化页面
conn=new OleDbConnection(Provider=MicrosoftJetOLEDB;Data Source=+ServerMapPath(DataBase\TestDataBasemdb));
if(!PageIsPostBack)
{
DataBind();
}
}
Web 窗体设计器生成的代码#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASPNET Web 窗体设计器所必需的
//
InitializeComponent();
baseOnInit(e);
}
/**//// <summary>
/// 设计器支持所需的方法 不要使用代码编辑器修改
/// 此方法的内容
/// </summary>
private void InitializeComponent()
{
thisPagerPageChanged += new SystemEventHandler(thisChange);//这是必须的
thisLoad += new SystemEventHandler(thisPage_Load);
}
#endregion
private void DataBind(int CurPage)//数据绑定方法
{
cmd=new OleDbCommand(select * from news order by id desc conn);
OleDbDataAdapter adapter=new OleDbDataAdapter(cmd);
DataSet ds=new DataSet();
adapterFill(dsPagerPageSize*CurPagePagerPageSizenews);
DataGridDataSource=dsTables[news];
DataGridDataBind();
cmd=new OleDbCommand(select count(id) from newsconn);
connOpen();
PagerRecTotal = (int)cmdExecuteScalar();
PagerDataBind();
connClose();
}
private void Change(object sender SystemEventArgs e)
{
DataBind(PagerCurPage); //得到当前页记录集绑定到DataGird表上
}
}
}