asp.net 分页sql语句(结合aspnetpager)

  数据库操作类:

  

复制代码 代码如下:

  /// <summary>

  /// 取得总数

  /// </summary>

  /// <returns></returns>

  public string getTotal()

  {

  StringBuilder sb = new StringBuilder();

  sb.Append("select count(*) total from Test");

  DataTable dt = DBHelper.ExecuteDt(sb.ToString());

  return dt.Rows[0][0].ToString();

  }

  /// <summary>

  /// 根据当前页码,每页条数,取得相应数据。

  /// </summary>

  /// <param name="pageNum">每页显示条数</param>

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

  /// <returns></returns>

  public DataTable getPagesData(int pageNum, int currentPage)

  {

  StringBuilder sb = new StringBuilder();

  sb.Append("select top " + pageNum + " * from Test where ");

  sb.Append("ID not in (select top " + pageNum * currentPage + " ID from Test)");

  return DBHelper.ExecuteDt(sb.ToString());

  }

  前台:

  

复制代码 代码如下:

  <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="sqlPager_Default" %>

  <%@ Register Assembly="AspNetPager" Namespace="Wuqi.Webdiyer" TagPrefix="webdiyer" %>

  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

  <html xmlns="http://www.w3.org/1999/xhtml" >

  <head runat="server">

  <title>不用存储过程的分页</title>

  </head>

  <body>

  <form id="form1" runat="server">

  <div>

  <asp:gridview ID="gvSql" runat="server">

  </asp:gridview>

  </div>

  <div>

  <webdiyer:aspnetpager ID="AspNetPager1" runat="server" OnPageChanged="AspNetPager1_PageChanged" PageSize="3">

  </webdiyer:aspnetpager>

  </div>

  </form>

  </body>

  </html>

  后台:

  

复制代码 代码如下:

  using System;

  using System.Data;

  using System.Configuration;

  using System.Collections;

  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;

  public partial class sqlPager_Default : System.Web.UI.Page

  {

  BLL.Test test = new BLL.Test();

  protected void Page_Load(object sender, EventArgs e)

  {

  if (!IsPostBack)

  {

  AspNetPager1.RecordCount = Convert.ToInt32(test.getTotal());//此属性保存总记录数..

  Bind();

  }

  }

  private void Bind()

  {

  this.gvSql.DataSource = test.getPagesData(Convert.ToInt32(AspNetPager1.PageSize), AspNetPager1.CurrentPageIndex - 1);

  this.gvSql.DataBind();

  }

  protected void AspNetPager1_PageChanged(object sender, EventArgs e)

  {

  Bind();

  }

  }