一个通用的分页类

了孤

了孤

2016-02-19 17:58

每个人都希望每天都是开心的,不要因为一些琐事扰乱了心情还,闲暇的时间怎么打发,关注图老师可以让你学习更多的好东西,下面为大家推荐一个通用的分页类,赶紧看过来吧!

  结合一个存储过程,将分页做成最简单,请看以下源码

  此分页类所操作的存储过程#region 此分页类所操作的存储过程
  /**//*********************************************************
   *
   * 功能强大,配合以下这个存储过程
   *
   * *******************************************************/
  /**//*
  -- Pager 1,10,0,0, 'EmployeeID2 and EmployeeID5 ' , 'Employees','*','LastName',0
  CREATE PROCEDURE Pager
      @PageIndex             int,--索引页 1
      @PageSize              int,--每页数量2
      @RecordCount        int out,--总行数3
      @PageCount             int out,--总页数4
      @WhereCondition         Nvarchar(1000),--查询条件5
      @TableName          nvarchar(500),--查询表名6
      @SelectStr          nvarchar(500) = '*',--查询的列7
      @Order              nvarchar(500),--排序的列8
      @OrderType            bit = 0,        -- 设置排序类型, 非 0 值则降序 9
      @Groupby            NVarChar(100) = ''
  AS

  declare  @strSQL   nvarchar(2000)     -- 主语句
  declare @strTmp   nvarchar(1000)     -- 临时变量
  declare @strOrder nvarchar(1000)       -- 排序类型

  if @OrderType != 0
  begin
      set @strTmp = '(select min'
      set @strOrder = ' order by ' + @Order +' desc'
  end
  else
  begin
      set @strTmp = '(select max'
      set @strOrder = ' order by ' + @Order +' asc'
  end

  set @strSQL = 'select top ' + str(@PageSize) + ' ' + @SelectStr + ' from '
      + @TableName + ' where ' + @Order + '' + @strTmp + '(['
      + @Order + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' ['
      + @Order + '] from ' + @TableName + '' + @strOrder + ') as tblTmp)'
      + @Groupby + @strOrder

  if @WhereCondition != ''
      set @strSQL = 'select top ' + str(@PageSize) + ' ' + @SelectStr + ' from '
          + @TableName + ' where ' + @Order + '' + @strTmp + '(['
          + @Order + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' ['
          + @Order + '] from ' + @TableName + ' where (' + @WhereCondition + ') '
          + @strOrder + ') as tblTmp) and (' + @WhereCondition + ') ' + @Groupby + @strOrder

  if @PageIndex = 1
  begin
      set @strTmp = ''
      if @WhereCondition != ''
          set @strTmp = ' where (' + @WhereCondition + ')'

      set @strSQL = 'select top ' + str(@PageSize) + ' ' + @SelectStr + ' from '
          + @TableName + '' + @strTmp + ' ' + @Groupby + @strOrder
  end
  exec (@strSQL)
  --print @strSQL

      IF @WhereCondition ''
          Begin
              SET @strTmp = 'SELECT -1 FROM ' + @TableName + ' Where ' + (@WhereCondition)
          End
      ELSE
          Begin
              SET @strTmp = 'SELECT -1 FROM ' + @TableName
          End   
      EXEC SP_EXECUTESQL @strTmp
      SET @RecordCount    = @@RowCount
      --    获取总页数
      --    "CEILING"函数:取得不小于某数的最小整数
      SET @PageCount = CEILING(@RecordCount * 1.0 / @PageSize)
  GO
  *****************************************************************************/
  /**//****************************************************************************
   *
   *    用法
   *
   * ***************************************************************************/
   /**//*
          Dim ts As String = Request.Form.Item("txtDate")

          If (ts = "" Or ts Is Nothing) Then
              ts = Request.QueryString("txtDate")
          End If

  
          Dim ts2 As String = Request.Form.Item("txtDate2")

          If (ts2 = "" Or ts2 Is Nothing) Then
              ts2 = Request.QueryString("txtDate2")
          End If

          Dim ps As String = Request.Form.Item("pageIndex")

          If (ps = "" Or ps Is Nothing) Then
              ps = Request.QueryString("pageIndex")
          End If

          Dim t As Integer = 2
          Dim p As Integer = 1
          If ts Is Nothing Then
              ts = ""
          End If
          If ps Is Nothing Then
              ps = ""
          End If

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)

          If Not (ps = "") Then
              p = Integer.Parse(ps)
          End If

          Dim pager As Pager = New Pager
          pager.PageIndex = p
          pager.PageSize = 20
          pager.PageMode = PageMode.Str
          pager.WhereCondition = "TheDate between convert(datetime,'" + ts + "') and convert(datetime,'" + ts2 + "')"
          'pager.WhereCondition = " convert(char(10),TheDate,120)=  '" + ts + "'"
          pager.TableName = "LoadCountlog"
          pager.SelectStr = "*"
          pager.Order = "ID"
          pager.OrderType = False
          Dim dt As System.Data.DataTable = pager.GetDatas(p)
          myDataGrid.DataSource = dt
          myDataGrid.DataBind()
          Dim goUrl As String = "WebForm1.aspx?txtDate=" + ts + "&txtDate2=" + ts2
          Me.Label3.Text = "共:" + pager.PageCount.ToString + "页," + pager.RecordCount.ToString() + "条 strong" + pager.OutPager(pager, goUrl, False) + "/strong"
  */
  #endregion
  using System;
  using System.Data;
  using System.Data.SqlClient;
  using System.Configuration;
  using System.Collections;
  using System.Text;
  namespace solucky
  {
      /**//// summary
      /// 分页模式
      /// /summary
      public enum PageMode
      {
          /**//// summary
          /// 数字分页
          /// /summary
          Num    =0,
          /**//// summary
          /// 字符分页
          /// /summary
          Str    =1
      }
      /**//// summary
      /// 分页类,能过存储过程进行分页,功能相当强大。
      /// /summary
     
      public class Pager
      {
          private int pageIndex            = 0;
          private int recordCount            = 0;
          private int pageSize            = 20;
          private int pageCount            = 0;
          private int rowCount            = 0;
          private string tableName        = "";
          private string whereCondition    = "1=1";
          private string selectStr        = "*";
          private string order            = "";
          private string procedure        ="pager";       
          private bool orderType            = true;
          private PageMode pageMode        =PageMode.Num;   
          private string sqlConnectionString                    = ConfigurationSettings.AppSettings["database"];
          private string databaseOwner                        = "dbo";

          数据连接#region 数据连接
          /**//// summary
          /// 数据连接字符串
          /// /summary
          private string SqlConnectionString
          {
              get
              {
                  return this.sqlConnectionString;
              }
              set
              {
                  this.sqlConnectionString=value;
              }
          }

          /**//// summary
          ///获取连接实例
          /// /summary
          /// returns/returns
          private SqlConnection GetSqlConnectionString()
          {
              try
              {
                  return new SqlConnection(SqlConnectionString);
              }
              catch
              {
                  throw new Exception("SQL Connection String is invalid.");
              }
          }

  
          /**//// summary
          /// 数据对象所有者
          /// /summary
          private string DatabaseOwner
          {
              get
              {
                  return this.databaseOwner;
              }
              set{
                  this.databaseOwner=value;
              }
          }

          #endregion

          public Pager()
          {
              //
              // TODO: 在此处添加构造函数逻辑
              //
              //Enum.Parse(tyo
          }
          public Pager(string connstr )
          {
              if (connstr!=null)
                  this.SqlConnectionString=connstr;
          }
          #region
          /**//// summary
          /// 所要操作的存储过程名称,已有默认的分页存储过程
          /// /summary
          public string Procedure
          {
              get{
                  return this.procedure ;
              }
              set {
                  if (value==null || value.Length =0)
                  {
                      this.procedure="pager";
                  }
                  else
                  {
                      this.procedure=value;
                  }
              }
          }

          /**//// summary
          /// 当前所要显示的页面数
          /// /summary
          public int PageIndex

          {
              get
              {
                  return this.pageIndex;
              }
              set
              {
                  this.pageIndex                    = value;
              }
          }

          /**//// summary
          /// 总的页面数
          /// /summary
          public int PageCount
          {
              get
              {
                  return this.pageCount;
              }
              set
              {
                  this.pageCount                    = value;
              }
          }

          /**//// summary
          /// 总行数
          /// /summary
          public int RecordCount
          {
              get
              {
                  return this.recordCount;
              }
              set
              {
                  this.recordCount                = value;
              }
          }

          /**//// summary
          /// 每页条数
          /// /summary
          public int PageSize
          {
              get
              {
                  return this.pageSize;
              }
              set
              {
                  this.pageSize                    = value;
              }
          }

          /**//// summary
          /// 表名称
          /// /summary
          public string TableName
          {
              get
              {
                  return tableName;
              }
              set
              {
                  this.tableName                    = value;
              }
          }

          /**//// summary
          /// 条件查询
          /// /summary
          public string WhereCondition
          {
              get
              {
                  return whereCondition;
              }
              set
              {
                  whereCondition                    = value;
              }
          }

          /**//// summary
          /// 查询目标(搜索目标),比如:AddTime AS 时间,ID AS 编号
          /// /summary
          public string SelectStr
          {
              get
              {
                  return selectStr;
              }
              set
              {
                  selectStr                        = value;
              }
          }

          /**//// summary
          /// 排序的列
          /// /summary
          public string Order
          {
              get
              {
                  return order;
              }
              set
              {
                  order                            = value;
              }
          }

          /**//// summary
          /// 排序类型 true:asc false:desc
          /// /summary
          public bool OrderType
          {
              get
              {
                  return orderType;
              }
              set
              {
                  orderType                        = value;
              }
          }   
     
          /**//// summary
          /// 分页模式
          /// /summary
          public PageMode PageMode
          {
              get
              {
                  return this.pageMode;
              }
              set
              {
                  this.pageMode                    = value;
              }
          }

  
          /**//// summary
          /// 得到当前返回的数量
          /// /summary
          public int RowCount
          {
              get
              {
                  return this.rowCount;
              }
          }

          private string groupby;
          public string Groupby
          {
              get
              {
                  return this.groupby;
              }
              set
              {
                  this.groupby                = value;
              }
          }

          #endregion
          /**//// summary
          /// 分页查寻结果
          /// /summary
          public DataTable GetDatas(int pageIndex)
          {
              this.pageIndex  = pageIndex;
              Pager pager        = this;
              //pager.pageIndex    = pageIndex;
              DataTable returnTb  = Pagination(ref pager).Tables[0];
              this.rowCount    = returnTb.Rows.Count;
              return returnTb;
          }

          /**//// summary
          /// 分页操作存储过程函数
          /// /summary
          /// param name="pager"/param
          /// returns/returns
          private  DataSet Pagination(ref Pager pager)
          {
              using ( SqlConnection myConnection                = GetSqlConnectionString() )
              {
                  SqlDataAdapter myCommand                    = new SqlDataAdapter(pager.databaseOwner + "."+pager.Procedure, myConnection);
                  myCommand.SelectCommand.CommandType            = CommandType.StoredProcedure;

                  SqlParameter parameterPageIndex                = new SqlParameter("@PageIndex", SqlDbType.Int);
                  parameterPageIndex.Value                    = pager.PageIndex;
                  myCommand.SelectCommand.Parameters.Add(parameterPageIndex);

                  SqlParameter parameterPageSize                = new SqlParameter("@PageSize", SqlDbType.Int);
                  parameterPageSize.Value                        = pager.PageSize;
                  myCommand.SelectCommand.Parameters.Add(parameterPageSize);

                  SqlParameter parameterRecordCount            = new SqlParameter("@RecordCount", SqlDbType.Int);
                  parameterRecordCount.Value                    = 0;
                  parameterRecordCount.Direction                = ParameterDirection.InputOutput;
                  myCommand.SelectCommand.Parameters.Add(parameterRecordCount);

  
                  SqlParameter parameterPageCount                = new SqlParameter("@PageCount", SqlDbType.Int);
                  parameterPageCount.Value                    = 0;
                  parameterPageCount.Direction                = ParameterDirection.InputOutput;
                  myCommand.SelectCommand.Parameters.Add(parameterPageCount);

                  SqlParameter parameterWhereCondition        = new SqlParameter("@WhereCondition", SqlDbType.NVarChar,500);
                  parameterWhereCondition.Value                = pager.WhereCondition;
                  myCommand.SelectCommand.Parameters.Add(parameterWhereCondition);

                  SqlParameter parameterTableName                = new SqlParameter("@TableName", SqlDbType.NVarChar,500);
                  parameterTableName.Value                    = pager.TableName;
                  myCommand.SelectCommand.Parameters.Add(parameterTableName);

                  SqlParameter parameterOrder                    = new SqlParameter("@Order", SqlDbType.NVarChar,500);
                  parameterOrder.Value                        = pager.Order;
                  myCommand.SelectCommand.Parameters.Add(parameterOrder);

                  SqlParameter parameterSelectStr                = new SqlParameter("@SelectStr", SqlDbType.NVarChar,500);
                  parameterSelectStr.Value                    = pager.SelectStr;
                  myCommand.SelectCommand.Parameters.Add(parameterSelectStr);

                  SqlParameter parameterGroupby                = new SqlParameter("@Groupby", SqlDbType.NVarChar, 100);
                  parameterGroupby.Value                        = pager.Groupby;
                  myCommand.SelectCommand.Parameters.Add(parameterGroupby);

                  SqlParameter parameterOrderType                = new SqlParameter("@OrderType", SqlDbType.Bit);
                  parameterOrderType.Value                    = pager.OrderType==false?0:1;
                  myCommand.SelectCommand.Parameters.Add(parameterOrderType);   
     

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)

                  DataSet returnDS                            = new DataSet();

                  //SqlDataAdapter sqlDA                        = myCommand.crnew SqlDataAdapter(myCommand);
                  myCommand.Fill(returnDS);

                  pager.PageCount                                = (int)parameterPageCount.Value;
                  pager.RecordCount                            = (int)parameterRecordCount.Value;

                  return returnDS;
              }

          }
     
          生成分页#region 生成分页
          /**//// summary
          /// 生成分页格式
          /// /summary
          /// param name="pager"/param
          /// param name="url"/param
          /// param name="isBr"/param
          /// returns/returns
          public string OutPager(Pager pager,string url,bool isBr)
          {
              StringBuilder returnOurWml;
              if(isBr)
              {
                  returnOurWml= new StringBuilder("["+ pager.PageCount.ToString() + "页," + pager.RecordCount.ToString() +"条]br/");
              }
              else
              {
                  returnOurWml = new StringBuilder();
              }
              if (pager.PageMode == PageMode.Num)
              {
                  //分页每行显示的数量
                  int pagersCount = 10;
                  int pagers        = 0;
                  int startInt    = 1;
                  int endInt        = pager.PageCount;
                  int i            = 1;

                  string endStr   = "";

  
                  if (pager.PageCountpagersCount)
                  {

                      //double        k = ;
                      pagers          = pager.PageIndex / pagersCount;
             
                      if (pagers == 0)
                      {
                          pagers = 1;
                      }
                      else if((pager.PageIndex % pagersCount)!=0)
                      {
                          pagers +=1;
                      }

                      endInt          = pagers * pagersCount;
                      if (pager.PageIndex = endInt)
                      {
                          startInt = endInt +1 - pagersCount;
                          if (startInt 1)
                          {
                              startInt = 1;
                          }
                      }

                     
                      //显示数量不足时pagersCount
                      if (endInt=pager.PageCount)
                      {
                          endInt = pager.PageCount;
                      }
                      else
                      {
                          //if (pager.PageIndex)
                          endStr        = " a href="";
                          endStr        += url + "&pageIndex=" + (endInt + 1).ToString()  + "" title='第"+ (endInt + 1).ToString()+"页'";
                          endStr        += ">>";
                          endStr        += "/a  ";
                      }

                      if (pagers 1)
                      {
                          returnOurWml.Append(" a href="");
                          returnOurWml.Append(url + "&pageIndex=" + (startInt - 1).ToString() + "" title='第"+ (startInt - 1).ToString()+"页'");
                          returnOurWml.Append("<<");
                          returnOurWml.Append("/a  ");
                      }
                  }
                 
                  for (i = startInt; i=endInt;i++)
                  {
                     
                      if (i!=pager.PageIndex)
                      {
                          returnOurWml.Append(" a href="");
                          returnOurWml.Append(url + "&pageIndex=" + i.ToString() + "" title='第"+ i.ToString()+"页'");
                          returnOurWml.Append("["+i.ToString() + "]");
                          returnOurWml.Append("/a  ");
                      }
                      else
                      {
                          returnOurWml.Append("u"+ i.ToString() + "/u");
                      }
                  }

  
                  returnOurWml.Append(endStr);

  
                  return returnOurWml.Append("br/").ToString();
              }
              else
              {
                  if ( pager.PageIndex 1)
                  {
                      returnOurWml.Append(" a href="");
                      returnOurWml.Append(url + "&pageIndex=" + (pager.PageIndex -1).ToString() + """);
                      returnOurWml.Append("上一页");
                      returnOurWml.Append("/a  ");
                  }
                  if (pager.PageIndex pager.PageCount)
                  {
                      returnOurWml.Append(pager.PageIndex.ToString());
                      returnOurWml.Append(" a href="");
                      returnOurWml.Append(url + "&pageIndex=" + (pager.PageIndex +1).ToString() + """);
                      returnOurWml.Append("下一页");
                      returnOurWml.Append("/a  ");
                  }
                  return returnOurWml.Append("br/").ToString();
              }
          }

          #endregion
      }
  }

  
  http://www.cnblogs.com/solucky/archive/2006/09/20/509741.html

展开更多 50%)
分享

猜你喜欢

一个通用的分页类

Web开发
一个通用的分页类

创建一个ASP通用分页类

Web开发
创建一个ASP通用分页类

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

创建一个ASP通用分页类(一)

ASP
创建一个ASP通用分页类(一)

创建一个ASP通用分页类(二)

ASP
创建一个ASP通用分页类(二)

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

一个可查询所有表的“通用”查询分页类

Web开发
一个可查询所有表的“通用”查询分页类

一个通用的jsp分页PageBean

Web开发
一个通用的jsp分页PageBean

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

kingofark关于学习C++和编程的50个观点

kingofark关于学习C++和编程的50个观点

善用Win7录屏功能快速解决系统问题

善用Win7录屏功能快速解决系统问题
下拉加载更多内容 ↓