数据分页一直以来是比较头疼的问题,不少的分页控件也随之产生。但是我用过的几个控件,本身都要执行sql,对存储过程支持不好,为了方便,特别写了个通用分页类,利用pageddatasource来实现datagrid,datalist,repeater的分页。完成上一页,下一页,
最后一页,最前一页,总页数,当前页数,跳转这些基本的功能。
using system;
using system.collections;
using system.componentmodel;
using system.data;
using system.web;
using system.web.sessionstate;
using system.web.ui;
using system.web.ui.webcontrols;
using system.web.ui.htmlcontrols;
namespace aspnetpager
{
///
/// netpager-本类提供datagrid,datalist,repeater的通用分页—jierry 04-7-19
///
public class netpager: system.web.ui.page
{
private system.web.ui.webcontrols.datagrid datagrid=null;
private system.web.ui.webcontrols.datalist datalist=null;
private system.web.ui.webcontrols.repeater repeater=null;
private system.web.ui.webcontrols.hyperlink lnknext;
private system.web.ui.webcontrols.hyperlink lnkprev;
private system.web.ui.webcontrols.hyperlink lnkfist;
private system.web.ui.webcontrols.hyperlink lnklast;
private system.web.ui.webcontrols.hyperlink lnkjump;
private system.web.ui.webcontrols.label pagenum;
private system.web.ui.webcontrols.label pagecount;
private system.web.ui.webcontrols.dropdownlist list;
public netpager()
{
//
// todo: 在此处添加构造函数逻辑
//
}
public system.web.ui.webcontrols.datagrid datagrid
{
get
{
return this.datagrid;
}
set
{
this.datagrid=value;
}
}
public system.web.ui.webcontrols.datalist datalist
{
get
{
return this.datalist;
}
set
{
this.datalist=value;
}
}
public system.web.ui.webcontrols.repeater repeater
{
get
{
return this.repeater;
}
set
{
this.repeater=value;
}
}
public system.web.ui.webcontrols.hyperlink lnkprev
{
get
{
return this.lnkprev;
}
set
{
this.lnkprev=value;
}
}
public system.web.ui.webcontrols.hyperlink lnknext
{
get
{
return this.lnknext;
}
set
{
this.lnknext=value;
}
}
public system.web.ui.webcontrols.hyperlink lnkfist
{
get
{
return this.lnkfist;
}
set
{
this.lnkfist=value;
}
}
public system.web.ui.webcontrols.hyperlink lnklast
{
get
{
return this.lnklast;
}
set
{
this.lnklast=value;
}
}
public system.web.ui.webcontrols.hyperlink lnkjump
{
get
{
return this.lnkjump;
}
set
{
this.lnkjump=value;
}
}
public system.web.ui.webcontrols.label pagenum
{
get
{
return this.pagenum;
}
set
{
this.pagenum=value;
}
}
public system.web.ui.webcontrols.label pagecount
{
get
{
return this.pagecount;
}
set
{
this.pagecount=value;
}
}
public system.web.ui.webcontrols.dropdownlist list
{
get
{
return this.list;
}
set
{
this.list=value;
}
}
public void datapage(dataset ds,int pagenum)
{
pageddatasource objpds = new pageddatasource();
objpds.allowpaging =true;
//每页显示数目
objpds.pagesize =pagenum;
//指定数据源
objpds.datasource = ds.tables[0].defaultview;
int curpage;
//绑定dropdownlist数据
for(int i=1;i<=objpds.pagecount;i++)
{
this.list.items.add(i.tostring());
}
this.list.items.insert(0,new listitem("页数",""));
//确定当前页数
if (system.web.httpcontext.current.request.params["page"] != null)
{
curpage=convert.toint32(system.web.httpcontext.current.request.params["page"]);
}
else
{
curpage=1;
}
objpds.currentpageindex = curpage-1;
//显示当前页数
this.pagenum.text="页数:"+curpage.tostring();
//显示总共页数
this.pagecount.text="共有"+objpds.pagecount+"页";
//下一页
if (!objpds.islastpage)
{
lnknext.navigateurl=system.web.httpcontext.current.request.currentexecutionfilepath+"?page=" + convert.tostring(curpage+1);
}
//上一页
if(!objpds.isfirstpage)
{
lnkprev.navigateurl=system.web.httpcontext.current.request.currentexecutionfilepath+"?page="+convert.tostring(curpage-1);
}
//第一页
if(curpage!=1)
{
lnkfist.navigateurl=system.web.httpcontext.current.request.currentexecutionfilepath+"?page="+convert.tostring(1);
}
//最后一页
if(curpage!=objpds.pagecount)
{
lnklast.navigateurl=system.web.httpcontext.current.request.currentexecutionfilepath+"?page="+convert.tostring(objpds.pagecount);
}
//绑定datagrid
if(this.datagrid!=null)
{
datagrid.datasource=objpds;
datagrid.databind();
}
//绑定datalist
if(this.datalist!=null)
{
datalist.datasource=objpds;
datalist.databind();
}
//绑定repeater
if(this.repeater!=null)
{
repeater.datasource=objpds;
repeater.databind();
}
}
//dropdownlist选择改变
public void select()
{
this.lnkjump.navigateurl=system.web.httpcontext.current.request.currentexecutionfilepath+"?page="+convert.tostring(this.list.selecteditem.value);
}
}
}
使用方法:
1.在引用里添加aspnetpager.dll的引用
2.using aspnetpager;
3.private netpager pager;
4.
page_load()
if(!ispostback)
{
pager=new netpager();
pager.datagrid=this.datagrid1;
pager.datalist=this.datalist1;
pager.repeater=this.repeater1;
pager.lnknext=this.hyperlink1;
pager.lnkprev=this.lnkprev;
pager.lnklast=this.lnklast;
pager.lnkfist=this.lnkfist;
pager.pagenum=this.label1;
pager.pagecount=this.label2;
pager.list=this.dropdownlist1;
dataset ds=new dataset();
ds.readxml(server.mappath("test.xml"));
pager.datapage(ds,5);
}
5.private void dropdownlist1_selectedindexchanged(object sender, system.eventargs e)
{
pager=new netpager();
pager.list=this.dropdownlist1;
pager.lnkjump=this.hyperlink3;
pager.select();
}
