一段分页的代码

来源:互联网 发布:八王之乱 知乎 编辑:程序博客网 时间:2024/05/01 12:47
  1.  public override System.Data.DataTable List(string className, string option, string orderField, string orderDirection, string primaryKey, int pageIndex, int pageSize, out int recordCount, out int pageCount)
  2.   {
  3.    //string spname = "sp_" + className + "ListPage";
  4.    //SqlParameter[] sps = new SqlParameter[8];
  5.    //sps[0] = createParameter("@option", SqlDbType.VarChar, option, 500, ParameterDirection.Input);
  6.    //sps[1] = createParameter("@orderField", SqlDbType.VarChar, orderField, 50, ParameterDirection.Input);
  7.    //sps[2] = createParameter("@orderDirection", SqlDbType.VarChar, orderDirection, 20, ParameterDirection.Input);
  8.    //sps[3] = createParameter("@primaryKey", SqlDbType.VarChar, primaryKey, 50, ParameterDirection.Input);
  9.    //sps[4] = createParameter("@pageSize", SqlDbType.Int, pageSize, 4, ParameterDirection.Input);
  10.    //sps[5] = createParameter("@pageIndex", SqlDbType.Int, pageIndex, 4, ParameterDirection.Input);
  11.    //sps[6] = createParameter("@recordCount", SqlDbType.Int, null, 4, ParameterDirection.Output);
  12.    //sps[7] = createParameter("@pageCount", SqlDbType.Int, null, 4, ParameterDirection.Output);
  13.    //DataTable dt = ExecuteDataSet(CommandType.StoredProcedure, spname, sps).Tables[0];
  14.    //int rcount = int.Parse(sps[6].Value.ToString());
  15.    //int pcount = int.Parse(sps[7].Value.ToString());
  16.    //recordCount = rcount;
  17.    //pageCount = pcount;
  18.    //return dt;
  19.    string tableName = "tb" + className;
  20.    string sql = "Select Count(" + primaryKey + ") As rcount From " + tableName;
  21.    if (option != "")
  22.    {
  23.     sql += " Where " + option;
  24.    }
  25.    int resultCount = int.Parse(ExecuteScalar(sql, null).ToString());
  26.    recordCount = resultCount;
  27.    if (resultCount >= 0)
  28.    {
  29.     //计算页数
  30.     if (resultCount % pageSize == 0)
  31.     {
  32.      pageCount = resultCount / pageSize;
  33.     }
  34.     else
  35.     {
  36.      pageCount = (int)((resultCount / pageSize) + 1);
  37.     }
  38.     //排序字段
  39.     if (orderField != "")
  40.     {
  41.      orderField = " Order By " + orderField;
  42.      if (orderDirection != "")
  43.      {
  44.       orderField += " " + orderDirection;
  45.      }
  46.     }
  47.     //组合查询语句
  48.     if (pageIndex == 1)
  49.     {
  50.      //第一页
  51.      if (option != "")
  52.      {
  53.       sql = "Select Top " + pageSize.ToString() + " * From " + tableName + " Where " + option + " " + orderField;
  54.      }
  55.      else
  56.      {
  57.       sql = "Select Top " + pageSize.ToString() + " * From " + tableName + " " + orderField;
  58.      }
  59.     }
  60.     else
  61.     {
  62.      int minRecord = (pageIndex - 1) * pageSize;
  63.      //非第一页
  64.      if (option != "")
  65.      {
  66.       sql = "Select Top " + pageSize.ToString() + " * From " + tableName + " Where " + primaryKey + " Not In(Select " + primaryKey + " From (Select Top " + minRecord + " " + primaryKey + " From " + tableName + " Where " + option + " " + orderField + ")TemA) And " + option + " " + orderField;
  67.      }
  68.      else
  69.      {
  70.       sql = "Select Top " + pageSize.ToString() + " * From " + tableName + " Where " + primaryKey + " Not In(Select " + primaryKey + " From (Select Top " + minRecord + " " + primaryKey + " From " + tableName + " " + orderField + " )temA)  " + orderField;
  71.      }
  72.     }
  73.    }
  74.    else
  75.    {
  76.     pageCount = 0;
  77.    }
  78.    DataTable dt = ExecuteDataSet(sql, null).Tables[0];
  79.    return dt;
  80.   }
原创粉丝点击