下面是个repeater显示数据分页的例子
我在做时候遇到的问题给大家提一下刚开始我使用datareader做数据源,是不行,后才换dataset
在设置分页的时候一定要搞清楚当前页,如果你把当前页设置成1,那么他就从第二页显示数据了,因为它的当前页是从0开始的,而我们显示当前页时候是从1开始的
在比较是否达到总页数之前一定要先也给ps设置数据源,我就是先用ps.currentpageindex==ps.pagecount-1检查是否在最后一页,然后再ps.datasource=ds.tables["authors"].defaultview;设置数据源的,结果分页一直有问题.
呵呵,这几个问题搞了我半天。可能是我太菜了吧,学.net还没多久呢。
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;
using system.data.sqlclient;
namespace test
{
/// <summary>
/// repeater 的摘要说明。
/// </summary>
public class repeater : system.web.ui.page
{
protected system.web.ui.webcontrols.panel panel1;
protected system.web.ui.webcontrols.label label1;
protected system.web.ui.webcontrols.label lbcurpage;
protected system.web.ui.webcontrols.button button1;
protected system.web.ui.webcontrols.button button2;
protected system.web.ui.webcontrols.repeater repeater1;
private void page_load(object sender, system.eventargs e)
{
// 在此处放置用户代码以初始化页面
if(!this.ispostback)
{
this.lbcurpage.text=”1″;
this.bindtorepeater();
}
}
private void bindtorepeater()
{
sqlconnection con=new sqlconnection(“data source=.;database=pubs;uid=sa;pwd=123a456b”);
// sqlcommand cmd=new sqlcommand(“select * from authors”,con);
// con.open();
// sqldatareader dr;
// dr=cmd.executereader();
sqldataadapter da=new sqldataadapter(“select * from authors”,con);
dataset ds=new dataset();
da.fill(ds,”authors”);
pageddatasource ps=new pageddatasource();
ps.allowpaging=true;
ps.pagesize=5;
this.repeater1.datasource=ps;
ps.currentpageindex=convert.toint32(this.lbcurpage.text)-1;
ps.datasource=ds.tables[“authors”].defaultview;
this.button1.enabled=true;
this.button2.enabled=true;
if(ps.currentpageindex==0)
{
this.button1.enabled=false;
}
if(ps.currentpageindex==ps.pagecount-1)
{
this.button2.enabled=false;
}
this.repeater1.databind();
}
#region web 窗体设计器生成的代码
override protected void oninit(eventargs e)
{
//
// codegen: 该调用是 asp.net web 窗体设计器所必需的。
//
initializecomponent();
base.oninit(e);
}
/// <summary>
/// 设计器支持所需的方法 – 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void initializecomponent()
{
this.button1.click += new system.eventhandler(this.button1_click);
this.button2.click += new system.eventhandler(this.button2_click);
this.load += new system.eventhandler(this.page_load);
}
#endregion
private void button1_click(object sender, system.eventargs e)
{
this.lbcurpage.text=convert.tostring(convert.toint32(this.lbcurpage.text)-1);
this.bindtorepeater();
}
private void button2_click(object sender, system.eventargs e)
{
this.lbcurpage.text=convert.tostring(convert.toint32(this.lbcurpage.text)+1);
this.bindtorepeater();
}
}
}