———-pager.ascx————————————-
<%@ control language="c#" autoeventwireup="false" codebehind="test.pager.ascx.cs" inherits="pager" targetschema="http://schemas.microsoft.com/intellisense/ie5" %>
<asp:label id="lbl_pageinfo" runat="server">还未用pagerbind()方法绑定</asp:label>
<asp:linkbutton id="btn_first" runat="server" visible="false">首页</asp:linkbutton> <asp:linkbutton id="btn_pre" runat="server" visible="false">前页</asp:linkbutton> <asp:linkbutton id="btn_next" runat="server" visible="false">下页</asp:linkbutton> <asp:linkbutton id="btn_last" runat="server" visible="false">尾页</asp:linkbutton> <asp:label id="lbl_1" runat="server" visible="false">转到</asp:label>
<asp:dropdownlist id="drop_curpage" runat="server" autopostback="true" visible="false">
<asp:listitem value="0">0</asp:listitem>
</asp:dropdownlist>
<asp:label id="lbl_2" runat="server" visible="false">页</asp:label>
———-end——————————————–
———-pager.ascx.cs————————————-
namespace test
{
using system;
using system.data;
using system.drawing;
using system.web;
using system.web.ui.webcontrols;
using system.web.ui.htmlcontrols;
/// <summary>
/// pager 的摘要说明。
/// </summary>
public class pager : system.web.ui.usercontrol
{
protected system.web.ui.webcontrols.linkbutton btn_first;
protected system.web.ui.webcontrols.linkbutton btn_pre;
protected system.web.ui.webcontrols.linkbutton btn_next;
protected system.web.ui.webcontrols.linkbutton btn_last;
protected system.web.ui.webcontrols.dropdownlist drop_curpage;
protected system.web.ui.webcontrols.label lbl_1;
protected system.web.ui.webcontrols.label lbl_2;
protected system.web.ui.webcontrols.label lbl_pageinfo;
public event eventhandler myclick;
private void page_load(object sender, system.eventargs e)
{
// 在此处放置用户代码以初始化页面
if (!page.ispostback)
{
rectotal = 0;
pagesize = 10;
curpage = 0;
lang = 0; //中文版
}
}
#region pager控件使用帮助及参数说明
/*
* 版本:v1.0
本控件带有三个自定义属性和一个方法.具体如下:
属性:
rectotal 记录总数 默认值:0
pagesize 每页记录数 默认值:0
curpage 当前页 默认值:0
lang 版本语言 默认值:0 注:0为中文版,1为英文版
方法:
pagerbind 绑定当前自定义控件,如不绑定,该控件则不能显示到页面上
*/
#endregion
#region web 窗体设计器生成的代码
override protected void oninit(eventargs e)
{
//
// codegen: 该调用是 asp.net web 窗体设计器所必需的。
//
initializecomponent();
base.oninit(e);
}
/// <summary>
/// 设计器支持所需的方法 – 不要使用代码编辑器
/// 修改此方法的内容。
/// </summary>
private void initializecomponent()
{
this.btn_first.click += new system.eventhandler(this.btn_first_click);
this.btn_pre.click += new system.eventhandler(this.btn_pre_click);
this.btn_next.click += new system.eventhandler(this.btn_next_click);
this.btn_last.click += new system.eventhandler(this.btn_last_click);
this.drop_curpage.selectedindexchanged += new system.eventhandler(this.drop_curpage_selectedindexchanged);
this.load += new system.eventhandler(this.page_load);
}
#endregion
#region 共用参数传递
public int rectotal //记录总数
{
get { return (int)viewstate["rectotal"]; }
set { viewstate["rectotal"] = value; }
}
public int pagesize //每页记录数
{
get { return (int)viewstate["pagesize"]; }
set { viewstate["pagesize"] = value; }
}
public int curpage //当前页
{
get { return (int)viewstate["curpage"]; }
set { viewstate["curpage"] = value; }
}
public int lang //语言选择
{
get { return (int)viewstate["lang"]; }
set { viewstate["lang"] = value; }
}
#endregion
#region 相关方法及事件
public void pagerbind()
{
viewstate["pagetotal"]=((int)viewstate["rectotal"]%(int)viewstate["pagesize"]>0) ? (int)viewstate["rectotal"]/(int)viewstate["pagesize"]+1 : (int)viewstate["rectotal"]/(int)viewstate["pagesize"]; //页总数
if ((int)viewstate["lang"]==0)
{
lbl_pageinfo.text="共<font color=red>"+viewstate["rectotal"].tostring()+"</font>条信息 <font color=red>"+viewstate["pagesize"].tostring()+"</font>条/页 当前<font color=red>"+((int)viewstate["curpage"]+1).tostring()+"</font>/<font color=red>"+viewstate["pagetotal"].tostring()+"</font>页";
}
else
{
lbl_pageinfo.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"]+1).tostring()+"</font>/<font color=red>"+viewstate["pagetotal"].tostring()+"</font>page";
lbl_1.text = "to";
lbl_2.text = "page";
btn_first.text = "first";
btn_pre.text = "forward";
btn_next.text = "next";
btn_last.text = "last";
}
drop_curpage.items.clear();
for (int i=0;i<(int)viewstate["pagetotal"];i++)
{
drop_curpage.items.add(convert.tostring(i+1));
}
drop_curpage.selectedindex = drop_curpage.items.indexof(drop_curpage.items.findbyvalue(convert.tostring((int)viewstate["curpage"]+1)));
btn_first.visible = true;
btn_pre.visible = true;
btn_next.visible = true;
btn_last.visible = true;
lbl_1.visible = true;
lbl_2.visible = true;
drop_curpage.visible = true;
btn_first.enabled = true;
btn_pre.enabled = true;
btn_next.enabled = true;
btn_last.enabled = true;
if ((int)viewstate["curpage"]==0)
{
btn_first.enabled = false;
btn_pre.enabled = false;
btn_next.enabled = true;
btn_last.enabled = true;
}
if ((int)viewstate["curpage"]==( (int)viewstate["pagetotal"]-1) )
{
btn_first.enabled = true;
btn_pre.enabled = true;
btn_next.enabled = false;
btn_last.enabled = false;
}
if (( (int)viewstate["pagetotal"]-1) == 0 )
{
btn_first.enabled = false;
btn_pre.enabled = false;
btn_next.enabled = false;
btn_last.enabled = false;
}
}
private void drop_curpage_selectedindexchanged(object sender, system.eventargs e)
{
viewstate["curpage"] = drop_curpage.selectedindex;
pagerbind();
if (myclick != null)
myclick(this, eventargs.empty);
}
private void btn_first_click(object sender, system.eventargs e)
{
viewstate["curpage"] = 0;
pagerbind();
if (myclick != null)
myclick(this, eventargs.empty);
}
private void btn_pre_click(object sender, system.eventargs e)
{
viewstate["curpage"] = (int)viewstate["curpage"]-1;
pagerbind();
if (myclick != null)
myclick(this, eventargs.empty);
}
private void btn_next_click(object sender, system.eventargs e)
{
viewstate["curpage"] = (int)viewstate["curpage"]+1;
pagerbind();
if (myclick != null)
myclick(this, eventargs.empty);
}
private void btn_last_click(object sender, system.eventargs e)
{
viewstate["curpage"] = (int)viewstate["pagetotal"]-1;
pagerbind();
if (myclick != null)
myclick(this, eventargs.empty);
}
#endregion
}
}
——————————————————————————
———–调用页面webform1.aspx——————————————–
<%@ page language="c#" codebehind="webform1.aspx.cs" autoeventwireup="false" inherits="test.webform1" %>
<%@ register tagprefix="uc1" tagname="pager" src="pager.ascx" %>
<!doctype html public "-//w3c//dtd html 4.0 transitional//en" >
<html>
<head>
<title>webform2</title>
<meta name="generator" content="microsoft visual studio .net 7.1">
<meta name="code_language" content="c#">
<meta name="vs_defaultclientscript" content="javascript">
<meta name="vs_targetschema" content="http://schemas.microsoft.com/intellisense/ie5">
</head>
<body>
<form id="form1" method="post" runat="server">
<font face="宋体">
<asp:datagrid id="datagrid1" runat="server"></asp:datagrid></font>
<uc1:pager id="pager1" runat="server" onmyclick="getpage"></uc1:pager>
</form>
</body>
</html>
————————————————————————————
———–调用页面webform1.aspx.cs——————————————–
using system;
using system.collections;
using system.componentmodel;
using system.data;
using system.drawing;
using system.web;
using system.web.sessionstate;
using system.web.ui;
using system.web.ui.webcontrols;
using system.web.ui.htmlcontrols;
namespace test
{
/// <summary>
/// webform2 的摘要说明。
/// </summary>
public class webform1 : system.web.ui.page
{
protected system.web.ui.webcontrols.datagrid datagrid1;
protected test.pager pager1;
private void page_load(object sender, system.eventargs e)
{
// 在此处放置用户代码以初始化页面
datagrid1bind(0);
}
#region web 窗体设计器生成的代码
override protected void oninit(eventargs e)
{
//
// codegen: 该调用是 asp.net web 窗体设计器所必需的。
//
initializecomponent();
base.oninit(e);
}
/// <summary>
/// 设计器支持所需的方法 – 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void initializecomponent()
{
this.load += new system.eventhandler(this.page_load);
}
#endregion
private void datagrid1bind(int page)
{
datagrid1.datasource = mydatasource; //此处请自行绑定当前页数据集的数据源
datagrid1.databind();
pager1.rectotal = mytotal; //此处请自行绑定数据集总记录数
pager1.pagesize = 10;
pager1.curpage = page;
pager1.lang = 0; //0为中文版,1为英文版
pager1.pagerbind();
}
public void getpage(object sender, eventargs e)
{
datagrid1bind(pager1.curpage);
}
}
}
————————————————————————-
