为分页找了一个类

public class PagingMachine
{
//在程序中使用的私有域
private System.Data.OleDb.OleDbConnection conn;
private System.Data.OleDb.OleDbDataAdapter ada;
private System.Data.DataSet ds;
//记录开始数
private int rowstart;
//用来显示每一页的连接
private System.Text.StringBuilder pagelinktext;
//用来显示每一页的连接
private System.Collections.ArrayList pagelinklist;

//属性赋值时用的私有域
//OleDbDataAdapter的SelectCommand.CommandText值,方便做更改用
private string selectcommandtext;
//总页数
private int pagescount;
//总记录数
private int rowscount;
//每页要显示的记录数
private int pagesize;
//当前页
private int absolutepage;

//属性
public string SelectCommandText{
get{return selectcommandtext;}
set{selectcommandtext=value;}
}
public int PagesCount{
get{return pagescount;}
}
public int RowsCount{
get{return rowscount;}
}
public int PageSize{
get{return pagesize;}
set{pagesize=value;}
}
public int AbsolutePage{
get{return absolutepage;}
set{absolutepage=value;}
}

//构造函数1,用OleDbConnection和OleDbDataAdapter做参数
public PagingMachine(System.Data.OleDb.OleDbConnection conn,System.Data.OleDb.OleDbDataAdapter ada){
this.conn=conn;
this.ada=ada;
this.selectcommandtext=ada.SelectCommand.CommandText;
}
//构造函数2,用两个string做参数,分别是数据库连接字符串和数据库查询字符串
public PagingMachine(string strsql,string strconn){
conn=new System.Data.OleDb.OleDbConnection(strconn);
ada=new System.Data.OleDb.OleDbDataAdapter(strsql,conn);
selectcommandtext=strsql;
}

//进行数据分页的方法
public virtual void DoPaging(){
ds=new System.Data.DataSet();
//先进行一次设定,如用户更改了selectcommandtext,则这里也相应的更改
ada.SelectCommand.CommandText=selectcommandtext;
//表counts用于计算记录总数
ada.Fill(ds,"counts");
//计算记录总数
rowscount=ds.Tables["counts"].Rows.Count;
//临时变量n,用于总页数的计算
int n;
//计算总页数,由于“5/3=1”的原因,所以必须分两种情况来分别讨论pagescount的取值
n=rowscount/pagesize;
if(pagesize*n==rowscount)
pagescount=n;
else
pagescount=n+1;
//计算数据表记录分段的位置,注意数据表的记录是从0号开始的
rowstart=pagesize*(absolutepage-1);
//下面操作是把当前页需要的数据装入“mbox”表,注意若记录总数小于需要提取的数量时,会自动结束
ada.Fill(ds,rowstart,pagesize,"mbox");
}

//此方法提供数据表的对外获取,用作容器控件的数据源,返回类型为DataTable
public virtual System.Data.DataTable GetAbsoluteTable(){
return ds.Tables["mbox"];
}

//返回进行页面间连接的字符串,形如--<a href="?page=i">i</a>--,用于Label控件的Text属性,需要的参数为自定义的在页面间传递的变量的名称
public virtual string GetPageLinkText(string page){
pagelinktext=new System.Text.StringBuilder();
for(int i=1;i<=pagescount;i++){
pagelinktext.Append("--<a href='?");
pagelinktext.Append(page);
pagelinktext.Append("=");
pagelinktext.Append(i);
pagelinktext.Append("'>");
pagelinktext.Append(i);
pagelinktext.Append("</a>--");
}
return pagelinktext.ToString();
}

//返回页面连接的数字集合,用于DropDownList
public virtual System.Collections.ArrayList GetPageLinkList(){
pagelinklist=new System.Collections.ArrayList();
for(int i=1;i<=pagescount;i++){
pagelinklist.Add(i);
}
return pagelinklist;
}
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值