分享
 
 
 

ASP.NET技巧:access下的分页方案

王朝asp·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

具体不多说了,只贴出相关源码~

using System;

using System.Collections.Generic;

using System.Text;

using System.Data;

using System.Data.OleDb;

using System.Web;

/**//// <summary>

/// 名称:access下的分页方案(仿sql存储过程)

/// 作者:cncxz(虫虫)

/// blog:http://cncxz.cnblogs.com

/// </summary>

public class AdoPager

{

protected string m_ConnString;

protected OleDbConnection m_Conn;

public AdoPager()

{

CreateConn(string.Empty);

}

public AdoPager(string dbPath)

{

CreateConn(dbPath);

}

private void CreateConn(string dbPath)

{

if (string.IsNullOrEmpty(dbPath))

{

string str = System.Configuration.ConfigurationManager.AppSettings["dbPath"] as string;

if (string.IsNullOrEmpty(str))

str = "~/App_Data/db.mdb";

m_ConnString = string.Format(@"Provider=Microsoft.Jet.OLEDB.4.0;Data source={0}", HttpContext.Current.Server.MapPath(str));

}

else

m_ConnString = string.Format(@"Provider=Microsoft.Jet.OLEDB.4.0;Data source={0}", dbPath);

m_Conn = new OleDbConnection(m_ConnString);

}

/**//// <summary>

/// 打开连接

/// </summary>

public void ConnOpen()

{

if (m_Conn.State != ConnectionState.Open)

m_Conn.Open();

}

/**//// <summary>

/// 关闭连接

/// </summary>

public void ConnClose()

{

if (m_Conn.State != ConnectionState.Closed)

m_Conn.Close();

}

private string recordID(string query, int passCount)

{

OleDbCommand cmd = new OleDbCommand(query, m_Conn);

string result = string.Empty;

using (IDataReader dr = cmd.ExecuteReader())

{

while (dr.Read())

{

if (passCount < 1)

{

result += "," + dr.GetInt32(0);

}

passCount--;

}

}

return result.Substring(1);

}

/**//// <summary>

/// 获取当前页应该显示的记录,注意:查询中必须包含名为ID的自动编号列,若不符合你的要求,就修改一下源码吧 :)

/// </summary>

/// <param name="pageIndex">当前页码</param>

/// <param name="pageSize">分页容量</param>

/// <param name="showString">显示的字段</param>

/// <param name="queryString">查询字符串,支持联合查询</param>

/// <param name="whereString">查询条件,若有条件限制则必须以where 开头</param>

/// <param name="orderString">排序规则</param>

/// <param name="pageCount">传出参数:总页数统计</param>

/// <param name="recordCount">传出参数:总记录统计</param>

/// <returns>装载记录的DataTable</returns>

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.IsNullOrEmpty(showString)) showString = "*";

if (string.IsNullOrEmpty(orderString)) orderString = "ID desc";

ConnOpen();

string myVw = string.Format(" ( {0} ) tempVw ", queryString);

OleDbCommand cmdCount = new OleDbCommand(string.Format(" select count(0) as recordCount from {0} {1}", myVw, whereString), m_Conn);

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_Conn);

}

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_Conn);

}

else

{

int pageLowerBound = pageSize * pageIndex;

int pageUpperBound = pageLowerBound - pageSize;

string recordIDs = recordID(string.Format("select top {0} {1} from {2} {3} order by {4} ", pageLowerBound, "ID", myVw, whereString, orderString), pageUpperBound);

cmdRecord = new OleDbCommand(str

[1] [2] 下一页

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有