源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2022-12-30 07:51 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:ASP.NET技巧:access下的分页方案
具体不多说了,只贴出相关源码~ using System; using System.Collections.Generic; using System.Text; using System.Data; using System.Data.OleDb; using System.Web; /**//// <summary> /// 名称:access下的分页方案(仿sql存储过程) /// 作者:cncxz(虫虫) /// blog:[url=http://cncxz.cnblogs.com/]http://cncxz.cnblogs.com[/url] /// </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(string.Format("select {0} from {1} where id in ({2}) order by {3} ", showString, myVw, recordIDs, orderString), m_Conn);         }         OleDbDataAdapter dataAdapter = new OleDbDataAdapter(cmdRecord);         DataTable dt=new DataTable();         dataAdapter.Fill(dt);         ConnClose();         return dt;     } } 还有调用示例:html代码 <%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "[url=http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd]http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd[/url]"> <html xmlns="[url=http://www.w3.org/1999/xhtml]http://www.w3.org/1999/xhtml[/url]" > <head runat="server">     <title>分页演示</title> </head> <body>     <form id="form1" runat="server">     <div>         <br />           转到第<asp:TextBox ID="txtPageSize" runat="server" Width="29px">1</asp:TextBox>页<asp:Button ID="btnJump" runat="server" Text="Go" OnClick="btnJump_Click" /><br />         <asp:GridView ID="GridView1" runat="server" CellPadding="4" ForeColor="#333333" GridLines="None" Width="90%">             <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />             <RowStyle BackColor="#EFF3FB" />             <EditRowStyle BackColor="#2461BF" />             <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />             <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />             <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />             <AlternatingRowStyle BackColor="White" />         </asp:GridView>     </div>         <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>     </form> </body> </html> 示例的codebehind代码 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.Collections.Generic; public partial class _Default : System.Web.UI.Page {     private AdoPager mm_Pager;     protected AdoPager m_Pager     {         get{             if (mm_Pager == null)                 mm_Pager = new AdoPager();             return mm_Pager;         }     }     protected void Page_Load(object sender, EventArgs e)     {         if(!IsPostBack)             LoadData();     }     private int pageIndex = 1;     private int pageSize = 20;     private int pageCount = -1;     private int recordCount = -1;     private void LoadData()     {         string strQuery = "select a.*,b.KindText from tableTest a left join tableKind b on a.KindCode=b.KindCode ";         string strShow = "ID,Subject,KindCode,KindText";             DataTable dt = m_Pager.ExecutePager(pageIndex, pageSize, strShow, strQuery, "", "ID desc", out pageCount, out recordCount);         GridView1.DataSource = dt;         GridView1.DataBind();         Label1.Text = string.Format("共{0}条记录,每页{1}条,页次{2}/{3}",recordCount,pageSize,pageIndex,pageCount);     }        protected void btnJump_Click(object sender, EventArgs e)     {         int.TryParse(txtPageSize.Text, out pageIndex);         LoadData();     } }  
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部