Access结合AspNetPager实现高效简洁分页功能

分页存储过程查询参数类

代码

using System;
using System.Collections.Generic;
using System.Text;

namespace King.Utility
{
    /// <summary>
    /// 分页存储过程查询参数类
    /// </summary>
    public class QueryParam
    {

#region "Private Variables"
        private string _TableName;
        private string _ReturnFields;
        private string _Where;
        private string _Orderfld;
        private int _OrderType = 1;
        private int _PageIndex = 1;
        private int _PageSize = int.MaxValue;
        #endregion

#region "Public Variables"

/// <summary>
        /// 表名
        /// </summary>
        public string TableName
        {
            get
            {
                return _TableName;
            }
            set
            {
                _TableName = value;
            }

}

/// <summary>
        /// 返回字段
        /// </summary>
        public string ReturnFields
        {
            get
            {
                return _ReturnFields;
            }
            set
            {
                _ReturnFields = value;
            }
        }

/// <summary>
        /// 查询条件 需带Where
        /// </summary>
        public string Where
        {
            get
            {
                return _Where;
            }
            set
            {
                _Where = value;
            }
        }

/// <summary>
        /// 排序字段
        /// </summary>
        public string Orderfld
        {
            get
            {
                return _Orderfld;
            }
            set
            {
                _Orderfld = value;
            }
        }

/// <summary>
        /// 排序类型 1:降序 其它为升序
        /// </summary>
        public int OrderType
        {
            get
            {
                return _OrderType;
            }
            set
            {
                _OrderType = value;
            }
        }

/// <summary>
        /// 当前页码
        /// </summary>
        public int PageIndex
        {
            get
            {
                return _PageIndex;
            }
            set
            {
                _PageIndex = value;
            }

}

/// <summary>
        /// 每页记录数
        /// </summary>
        public int PageSize
        {
            get
            {
                return _PageSize;
            }
            set
            {
                _PageSize = value;
            }
        }
        #endregion
    }
}

OleDbHepler 数据库操作类

代码

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.OleDb;
using System.Text;
/// <summary>
/// OleDbHepler 的摘要说明
/// </summary>
public class OleDbHepler
{
    
    #region "数据库设置"
    /// <summary>
    /// 获取数据库类型
    /// </summary>
    public static string GetDBType
    {
        get
        {
            return ConfigurationManager.AppSettings["DBType"];
        }
    }

/// <summary>
    /// 获取数据库连接字符串
    /// </summary>
    public static string GetConnString
    {
        get
        {
            return ConfigurationManager.AppSettings[GetDBType];
        }
    }
    #endregion
    /// <summary>
    /// 数据库连接字符串
    /// </summary>
    private string ConnString = string.Empty;

public OleDbHepler()
    {
        ConnString = string.Format("Provider=Microsoft.Jet.OleDb.4.0;Data Source={0}{1};Persist Security Info=True;", AppDomain.CurrentDomain.BaseDirectory, GetConnString);
    }

/// <summary>
    /// 获取数据连接
    /// </summary>
    /// <returns></returns>
    public OleDbConnection GetSqlConnection()
    {
        try
        {
            return new OleDbConnection(ConnString);
        }
        catch
        {
            throw new Exception("没有提供数据庫连接字符串Access!");
        }
    }

/// <summary>
    /// 公共查询数据函数Access版
    /// </summary>
    /// <param name="pp">查询字符串</param>
    /// <param name="RecordCount">返回记录总数</param>
    /// <returns>返回记录集DataSet</returns>
    public DataSet GetDataSetList(QueryParam pp, out int RecordCount)
    {
        RecordCount = 0;
        DataSet ds = new DataSet();
        using (OleDbConnection Conn = GetSqlConnection())
        {
            StringBuilder sb = new StringBuilder();
            int TotalRecordForPageIndex = pp.PageIndex * pp.PageSize;
            string OrderBy;
            string CutOrderBy;
            if (pp.OrderType == 1)
            {
                OrderBy = " Order by " + pp.Orderfld + " desc ";
                CutOrderBy = " Order by " + pp.Orderfld + " asc ";
            }
            else
            {
                OrderBy = " Order by " + pp.Orderfld + " asc ";
                CutOrderBy = " Order by " + pp.Orderfld + " desc ";
            }
            sb.AppendFormat("SELECT * FROM (SELECT TOP {0} * FROM (SELECT TOP {1} {2}    FROM {3} {4} {5}) TB2    {6}) TB3 {5} ", pp.PageSize, TotalRecordForPageIndex, pp.ReturnFields, pp.TableName, pp.Where, OrderBy, CutOrderBy);
            OleDbCommand cmd = new OleDbCommand();
            OleDbDataAdapter dr = new OleDbDataAdapter();
            cmd.Connection = Conn;
            cmd.CommandText = sb.ToString();
            Conn.Open();
            dr.SelectCommand = cmd;
           
            dr.Fill(ds, pp.TableName);
            dr.Dispose();
            cmd.Parameters.Clear();
            // 取记录总数
            cmd.CommandText = string.Format("SELECT Count(1) From {0} {1}", pp.TableName, pp.Where);
            RecordCount = Convert.ToInt32(cmd.ExecuteScalar());
            dr.Dispose();
            cmd.Dispose();
            Conn.Dispose();
            Conn.Close();
        }
        return ds;
    }
}

前台数据显示,分页控件采用AspNetPager,具体如何使用该控件大家上网查,资料很多。

代码

<body>
    <form id="form1" runat="server">
        <asp:GridView ID="GridView1" runat="server" CellPadding="4" ForeColor="#333333" GridLines="None" Width="98%">
            <RowStyle BackColor="#FFFBD6" ForeColor="#333333" />
            <FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
            <PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" />
            <SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" />
            <HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
            <AlternatingRowStyle BackColor="White" />
        </asp:GridView>
      
        <div>
            <webdiyer:AspNetPager ID="AspNetPager1" runat="server" OnPageChanged="AspNetPager1_PageChanged">
            </webdiyer:AspNetPager>
        </div>
    </form>
</body>

后台实现数据绑定

代码

 protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            BindData();           
        }
    }
    private void BindData()
    {
        QueryParam qp = new QueryParam();
        qp.TableName = "t_users";
        qp.Orderfld = "UserID";
        qp.ReturnFields = "*";
        qp.Where = SearchTerms;
        qp.PageIndex = AspNetPager1.CurrentPageIndex;
        qp.PageSize = AspNetPager1.PageSize;
        int RecordCount = 0;
        DataSet ds = new OleDbHepler().GetDataSetList(qp, out RecordCount);
        GridView1.DataSource = ds;
        GridView1.DataBind();
        this.AspNetPager1.RecordCount = RecordCount;
    }
    protected void AspNetPager1_PageChanged(object sender, EventArgs e)
    {
        BindData();
    }

/// <summary>
    /// 查询条件
    /// </summary>
    private string SearchTerms
    {
        get
        {
            if (ViewState["SearchTerms"] == null)
                ViewState["SearchTerms"] = " Where 1 = 1";
            return (string)ViewState["SearchTerms"];
        }
        set { ViewState["SearchTerms"] = value; }
    }

一切搞定。

转载于:https://www.cnblogs.com/nosnowwolf/archive/2006/06/16/427863.html

Access结合aspnetpager分页相关推荐

  1. Repeater使用 AspNetPager分页控件

    一.AspNetPager分页控件 分页是Web应用程序中最常用到的功能之一,在ASP.NET中,虽然自带了一个可以分页的DataGrid(asp.net 1.1)和GridView(asp.net ...

  2. DataGrid基于Access的快速分页法

    DataGrid基于Access的快速分页法 撰文/ 黎波 DataGrid是一个功能非常强大的ASP.NET Web服务器端控件,它除了能够方便地按各种方式格式化显示表格中的数据,还可以对表格中的数 ...

  3. access下的分页方案(仿sql存储过程)

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

  4. GridView 利用AspNetPager 分页时的自动编号

    GridView 利用AspNetPager 分页时的自动编号 <%# (this.WillisPager1.CurrentPageIndex-1) * this.WillisPager1.Pa ...

  5. Access数据库 实现分页查询

    Access数据库 实现分页查询 目录 说明 项目的结构 SQL语句 Servlet:page.java 显示页面query.jsp 访问页面hello.jsp 总结 目录 说明 项目环境:Eclip ...

  6. DataGrid连接Access的快速分页法(2)——SQL语句的选用(升序与降序)

    作者:黎波 一.相关概念      在 ACCESS 数据库中,一个表的主键(PRIMARY KEY,又称主索引)上必然建立了唯一索引(UNIQUE INDEX),因此主键字段的值是不会重复的.并且索 ...

  7. DataGrid连接Access的快速分页法(1)——需求与现状

    作者:黎波 一.需求分析      DataGrid是一个功能强大的ASP.NET Web服务器端控件,它除了能够按各种方式格式化显示数据,还可以对数据进行动态的排序.编辑和分页.大大减轻了广大Web ...

  8. AspNetPager分页控件

    http://files.cnblogs.com/zhangweiguo3984/AspNetPager433.rar 分页是Web应用程序中最常用到的功能之一,在ASP.NET中,虽然自带了一个可以 ...

  9. aspnetpager分页,不使用存储过程

    一.前台显示界面代码Default.aspx(注意,代码运行环境是VS.2005) <%@ Page Language="C#" AutoEventWireup=" ...

最新文章

  1. SQL操作的组成部分-事务控制
  2. Docker 健康检查功能
  3. Propel项目改为基于TensorFlow.js
  4. 荧光皮肤有哪些_价格适中又显白的口红有哪些?MAC占大头,KIKO卡拉泡泡超平价...
  5. express开发实例
  6. linux搭建Django环境,Linux (ubuntu 12.04)下搭建Python Django环境
  7. 【C++基础】时间类型详解(转)
  8. Segment-based Disparity Refinement with Occlusion Handling for Stereo Matching翻译和理解
  9. mysql查询id为5的数据类型_MySql学习05---数据类型
  10. Java截取视频文件缩略图
  11. C语言写计算ln()计算式,NTC热敏电阻温度计算方法,Steinhart-Hart方程和B值法(转)...
  12. OTA,一个万亿市场的风口
  13. 风云唐太宗(上部)精要
  14. c语言-查找字符串子串(类似strstr()函数)
  15. GNU C++ 智能指针6-- 解析_Sp_counted_inplace类
  16. IOS安卓友盟消息推送详细配置以及证书更新
  17. 互斥事件的概念和公式_高中数学典型例题分析与解答:互斥事件
  18. 计算机信息检索 服务方式,计算机信息检索.ppt
  19. 常用db与倍数的关系
  20. SVGA 礼物动画设计相关

热门文章

  1. Android4.1 新功能 新特性(转)
  2. Android 和 Chrome OS 融合的可能性
  3. JMeter性能测试入门
  4. Android 实现Activity后台运行
  5. android jni jbyteArray转char*
  6. WebView http图片加载失败
  7. android WebView的简单使用
  8. 五大常用经典算法—回溯算法
  9. 分布式文件系统—HDFS—shell命令
  10. 反Secure Boot垄断:兼谈如何在Windows 8电脑上安装Linux