具体不多说了,只贴出相关源码~
using System;
using System.Collectio .Generic;
using System.Text;
using System.Data;
using System.Data.OleD
using System.We
/**//// < ummary>
/// 名称:acce 下的分页方案(仿sql存储过程)
/// 作者:cncxz(虫虫)
/// blog:http://cncxz.c logs.com
/// </summary>
public cla AdoPager
{
protected string m_Co tring;
protected OleDbCo ection m_Co
public AdoPager()
{
CreateCo (string.Empty);
}
public AdoPager(string d ath)
{
CreateCo (d ath);
}
private void CreateCo (string d ath)
{
if (string.I ullOrEmpty(d ath))
{
string str = System.Configuration.ConfigurationManager.A ettings["d ath"] as string;
if (string.I ullOrEmpty(str))
str = "~/A _Data/db.mdb";
m_Co tring = string.Format(@"Provider=Microsoft.Jet.OLEDB.4.0;Data source={0}", HttpContext.Current.Server.Ma ath(str));
}
else
m_Co tring = string.Format(@"Provider=Microsoft.Jet.OLEDB.4.0;Data source={0}", d ath);
m_Co = new OleDbCo ection(m_Co tring);
}
/**//// < ummary>
/// 打开连接
/// </summary>
public void Co Open()
{
if (m_Co .State != Co ectio tate.Open)
m_Co .Open();
}
/**//// < ummary>
/// 关闭连接
/// </summary>
public void Co Close()
{
if (m_Co .State != Co ectio tate.Closed)
m_Co .Close();
}
private string recordID(string query, int pa Count)
{
OleDbCommand cmd = new OleDbCommand(query, m_Co );
string result = string.Empty;
using (IDataReader dr = cmd.ExecuteReader())
{
while (dr.Read())
{
if (pa Count < 1)
{
result += "," + dr.GetInt32(0);
}
pa Count--;
}
}
return result.Su tring(1);
}
/**//// < ummary>
/// 获取当前页应该显示的记录,注意:查询中必须包含名为ID的自动编号列,若不符合你的要求,就修改一下源码吧 :)
/// </summary>
/// < aram name="pageIndex">当前页码</param>
/// < aram name="pageSize">分页容量</param>
/// < aram name="showString">显示的字段</param>
/// < aram name="queryString">查询字符串,支持联合查询</param>
/// < aram name="whereString">查询条件,若有条件限制则必须以where 开头</param>
/// < aram name="orderString">排序规则</param>
/// < aram name="pageCount">传出参数:总页数统计</param>
/// < aram name="recordCount">传出参数:总记录统计</param>
/// <retur gt;装载记录的DataTable</retur gt;
public DataTable ExecutePager(int pageIndex, int pageSize, string showString, string queryString, string whereString, string orderString, out int pageCount, out int recordCount)
{
if (pageIndex < 1) pageIndex = 1;
if (pageSize < 1) pageSize = 10;
if (string.I ullOrEmpty(showString)) showString = "*";
if (string.I ullOrEmpty(orderString)) orderString = "ID desc";
Co Open();
string myVw = string.Format(" ( {0} ) tempVw ", queryString);
OleDbCommand cmdCount = new OleDbCommand(string.Format(" select count(0) as recordCount from {0} {1}", myVw, whereString), m_Co );
recordCount = Convert.ToInt32(cmdCount.ExecuteScalar());
if ((recordCount % pageSize) > 0)
pageCount = recordCount / pageSize + 1;
else
pageCount = recordCount / pageSize;
OleDbCommand cmdRecord;
if (pageIndex == 1)//第一页
{
cmdRecord = new OleDbCommand(string.Format("select top {0} {1} from {2} {3} order by {4} ", pageSize, showString, myVw, whereString, orderString), m_Co );
}
else if (pageIndex > pageCount)//超出总页数
{
cmdRecord = new OleDbCommand(string.Format("select top {0} {1} from {2} {3} order by {4} ", pageSize, showString, myVw, "where 1=2", orderString), m_Co );
}
else
{
int pageLowerBound = pageSize * pageIndex;
int pageU erBound = pageLowerBound - pageSize;


