using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Data.OleDb;
namespace DzPlatForm.DBUtility
{
public class AccessPage
{
private string _StringConnection; public string StringConnection
{
get { return _StringConnection; }
set { _StringConnection = value; }
} /// <summary>
/// 分页使用
/// </summary>
/// <param name="query"></param>
/// <param name="passCount"></param>
/// <returns></returns>
private string recordID(string query, int passCount)
{ using (OleDbConnection m_Conn = new OleDbConnection(StringConnection))
{
m_Conn.Open();
OleDbCommand cmd = new OleDbCommand(query, m_Conn);
string result = string.Empty;
using (OleDbDataReader dr = cmd.ExecuteReader())
{
while (dr.Read())
{
if (passCount < 1)
{
result += "," + dr.GetInt32(0);
}
passCount--;
}
}
m_Conn.Close();
m_Conn.Dispose();
return result.Substring(1);
}
}
/// <summary>
/// ACCESS高效分页
/// </summary>
/// <param name="pageIndex">当前页码</param>
/// <param name="pageSize">分页容量</param>
/// <param name="strKey">主键</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 strKey, 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 = strKey + " asc ";
using (OleDbConnection m_Conn = new OleDbConnection(StringConnection))
{
m_Conn.Open();
string myVw = string.Format(" ( {0} ) tempVw ", queryString);
OleDbCommand cmdCount = new OleDbCommand(string.Format(" select count(*) 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, strKey, myVw, whereString, orderString), pageUpperBound);
cmdRecord = new OleDbCommand(string.Format("select {0} from {1} where {2} in ({3}) order by {4} ", showString, myVw, strKey, recordIDs, orderString), m_Conn); }
OleDbDataAdapter dataAdapter = new OleDbDataAdapter(cmdRecord);
DataTable dt = new DataTable();
dataAdapter.Fill(dt);
m_Conn.Close();
m_Conn.Dispose();
return dt;
}
}
}
}

数据源:

        /// 数据源刷新
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void StoreProject_RefreshData(object sender, StoreRefreshDataEventArgs e)
{
DateTime startdate;
DateTime enddate;
startdate = Convert.ToDateTime(this.dfstartdate.Text.Trim());
enddate = Convert.ToDateTime(this.dfenddate.Text.Trim()); int PageSize = this.PagingToolbar1.PageSize; //获取当前在页面中PagingToolBar 的PageSize的值
int Count = 0;
int CurPage = e.Start / PageSize + 1; //获取当前的页码是多少,也就是第几页 StringBuilder strShow = new StringBuilder();
strShow.Append(" ID,项目编号,[项目编号-标记号], 标记号,申请日期,产品型号,样品数量,客户品名1,客户编号,销售员,样品设计人");//,采购回复最大日
strShow.Append(" ,预计完成时间 as 预计完成,实际完成时间 as 实际完成,客户要求交期,项目评分,客户品名2,备注,报价单号,客户类型,产品类型,产品性质");
strShow.Append(" ,是否开模,是否收费,是否做认证,模具费用,认证费用,设计审核人,项目类别,图纸编号,样品订单号,项目说明,客户反馈,项目状态,首单时间,文件归档,产品品牌"); StringBuilder strSql = new StringBuilder();
strSql.Append(" select ID,项目编号,[项目编号-标记号], 标记号,申请日期,产品型号,样品数量,客户品名1,客户编号,销售员,样品设计人");//,采购回复最大日
strSql.Append(" ,预计完成时间 ,实际完成时间 ,客户要求交期,项目评分,客户品名2,备注,报价单号,客户类型,产品类型,产品性质");
strSql.Append(" ,是否开模,是否收费,是否做认证,模具费用,认证费用,设计审核人,项目类别,图纸编号,样品订单号,项目说明,客户反馈,项目状态,首单时间,文件归档,产品品牌");
strSql.Append(" from 项目进度表 where format(申请日期,'yyyy-MM-dd')>='" + string.Format("{0:yyyy-MM-dd}", startdate) + "'");
strSql.Append(" and format(申请日期,'yyyy-MM-dd')<='" + string.Format("{0:yyyy-MM-dd}", enddate) + "'"); StringBuilder strWhere = new StringBuilder();
strWhere.Append("where 1=1 ");
if (txtCustomerCode.Text.Trim() != "")
{
strWhere.Append(" and 客户编号 like '" + txtCustomerCode.Text.Trim() + "'");
}
if (this.cbxCustomerType.SelectedItem.Text.Trim() != "")
{
strWhere.Append(" and 客户类型 like '" + cbxCustomerType.SelectedItem.Text.Trim() + "'");
}
if (this.cbxProductType.SelectedItem.Text.Trim() != "")
{
strWhere.Append(" and 产品类型 like '" + cbxProductType.SelectedItem.Text.Trim() + "'");
} if (this.cbxProjectStatus.SelectedItem.Text.Trim() != "")
{
strWhere.Append(" and 项目状态 like '" + cbxProjectStatus.SelectedItem.Text.Trim() + "'");
} int pagecount = 0;//总共多少页=PageSize
var store = this.GpProject.GetStore();
DBCon db = new DBCon("ZMProject"); AccessPage page = new AccessPage();
page.StringConnection = db.StringConnection();
DataTable dt = page.ExecutePager(CurPage, PageSize, "ID", strShow.ToString(), strSql.ToString(), strWhere.ToString(), " 申请日期 DESC ", out pagecount, out Count); e.Total = Count;
if (Count > 0)
{
store.DataSource = dt;//绑定数据
store.DataBind();
}
else
{
X.Msg.Alert("查询结果", "<font style='color:red;'>没有找到任何数据!</font>").Show();
}
}

显示结果:

[Ext.Net]GridPanel之Access数据库分页显示的更多相关文章

  1. Ext.Net 1.x_Ext.Net.GridPanel之Access数据库分页显示

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...

  2. asp.net实现access数据库分页

    最近在编程人生上看到篇文章很有感触,觉得人生还是要多奋斗.今天给大家贡献点干货. <divclass="page"id="ctrlRecordPage"& ...

  3. Jackcess 1.2.13 发布,Java 访问 Access 数据库

    Jackcess 1.2.13 包含新的方法用于在数据库和附件内容解码中查找复杂值类型的关系,修复了 CodeHandler 相关的一些小 bug. Jackcess 是一个Java 类库,用来读写微 ...

  4. Ext分页之php中,真分页显示

    这是我经过很多天调试的真分页显示Ext组件 显示页面ext.php <html> <head> <meta http-equiv="Content-Type&q ...

  5. winform里dataGridView分页代码,access数据库

    winform里dataGridView分页,默认dataGridView是不分页的和webform里不一样,webform中GridView自带自带了分页. 现在c/s的程序很多时候也需要webfo ...

  6. JavaWeb分页显示内容之分页查询的三种思路(数据库分页查询)

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6134851.html 在开发过程中,经常做的一件事,也是最基本的事,就是从数据库中查询数据,然后在客户端显示出 ...

  7. access数据库及其分页的方法

    首先access数据库的话,感觉针对比较小型的网站比较适合.携带方便,不需要按照特定的sql环境. 当然如果使用access数据库的话 1.首先你先要下载办公五合一(access也是其中之一) 2.w ...

  8. PHP——分页显示数据库内容

    test.php <?php header("Content-Type:text/html;charset=utf-8"); //加载分页类 include "pa ...

  9. C#读写Access数据库、表格datagridview窗体显示代码实例

    C#读写Access数据库.表格datagridview窗体显示代码实例 最近项目中用到C#对于Access数据库表读写.mdb操作,学习了下相关的东西,这里先整理C#对于Access数据库的操作,对 ...

随机推荐

  1. NoSql 数据库

    几款主流 NoSql 数据库的对比 posted @ 2016-05-11 21:36 vajoy 阅读(915) 评论(3) 编辑 收藏   最近小组准备启动一个 node 开源项目,从前端亲和力. ...

  2. URAL 1963 Kite 四边形求对称轴数

    题目链接: http://acm.timus.ru/problem.aspx?space=1&num=1963 题意,顺时针或逆时针给定4个坐标,问对称轴有几条,输出(对称轴数*2) 对于一条 ...

  3. hdu1116--解题报告--初步了解欧拉回路

    由题目意思..我们只要把n个字符串的首尾字母看作是点,这个字符串看着边来处理就可以啦...将题目的案例图形化如下: 那么接着就是欧拉路径和欧拉回路判断,我们这里用并査集来判断图是不是连通的,然后根据有 ...

  4. JavaScript之面向对象1

    学习过Java程序的开发人员都知道面向对象是怎么回事. 面向对象无非就是封装.多态.继承 比如: 声明一个类: class Person{ //私有成员 private String name; pr ...

  5. 11gR2RAC环境DBCA创建一个数据库错误ORA-15055 ORA-15001

    11gR2RAC环境DBCA创建一个数据库错误ORA-15055 ORA-15001 象: 在11gR2 GridInfrastructure和Database软件安装完毕之后,运行DBCA创建数据库 ...

  6. 浅谈 PHP 神盾的解密过程

    原文:浅谈 PHP 神盾的解密过程 前些日子一个朋友丢了个shell给我,让我帮忙解密,打开源码看了下写着是 “神盾加密” , 牛逼闪闪的样子.百度下发现神盾是个很古老的东西,最后一次更新是在 201 ...

  7. Linux目录文件详解FHS标准(2013.09.05)

    Linux 目录配置的依据FHS(Filesystem Hierarchy Standard)标准,将目录分成为四种交互作用的形态: 四种形态的具体解释: 可分享的:可以分享给其他系统挂载使用的目录, ...

  8. mini2440驱动奇谭——ADC驱动与測试(动态挂载驱动)

    博客:http://blog.csdn.net/muyang_ren 实现功能:开发板动态载入adc驱动模块并能通过測试程序 系统:Ubuntu 14.04     驱动交叉编译内核:linux-2. ...

  9. 基于Andoird 4.2.2的Account Manager源代码分析学习:创建选定类型的系统帐号

    AccountManager.addAccount() public AccountManagerFuture<Bundle> addAccount(final String accoun ...

  10. .Net路(十三)导出数据库到EXCEL

    .NET出口Office文件(word,excel)有两种方法我明白.一个存储在导出的文件中server录以下.利用response输出到浏览器地址栏,直接打开:还有直接利用javascript来导出 ...