zoukankan      html  css  js  c++  java
  • 通用分页取数据

    本方法是基于:select top 10 * from (select top 32  * from TD_Articles order by ID desc) where  order by ID desc产生的,此方法已经过测试

    1.方法如下:
    View Code
     #region 获取当前页显示记录
    /// <summary>
    /// 获取当前页显示记录
    /// </summary>
    /// <param name="pageIndex">当前页码</param>
    /// <param name="pageSize">分页容量</param>
    /// <param name="strFieldName">显示的字段</param>
    /// <param name="strTableName">表名列表</param>
    /// <param name="strWhere">条件列表</param>
    /// <param name="strOrder">排序列表</param>
    /// <param name="strAscDesc">排序方式:1为升序,0为降序</param>
    /// <param name="pageCount">传出参数:总页数统计</param>
    /// <param name="recordCount">传出参数:总记录数统计</param>
    /// <returns></returns>
    public static DataSet GetPager(int pageIndex, int pageSize, string strKey, string strFieldName, string strTableName, string strWhere, string strOrder, string strAscDesc, out int pageCount, out int recordCount)
    {
    DataSet ReturnDs = new DataSet();
    OleDbConnection connection = new OleDbConnection(connectionString);
    StringBuilder cmdText = new StringBuilder();
    string strOrdert = string.Empty;
    if (pageIndex < 0) pageIndex = 1;
    if (pageSize < 0) pageSize = 10;
    if (string.IsNullOrEmpty(strKey)) strKey = "*";
    if (string.IsNullOrEmpty(strFieldName)) strFieldName = "*";
    try
    {
    if (string.IsNullOrEmpty(strWhere))
    {
    strWhere = "";
    }
    else
    {
    strWhere = " where " + strWhere;
    }
    if (!string.IsNullOrEmpty(strOrder))
    {
    strOrdert = strOrder = " order by " + strOrder;
    }

    if (!string.IsNullOrEmpty(strAscDesc))
    {
    if (strAscDesc == "1")
    {
    strOrder += " Asc";
    strOrdert += " Desc";
    }
    else if (strAscDesc == "0")
    {
    strOrder += " Desc";
    strOrdert += " Asc";
    }
    }
    recordCount = Convert.ToInt32(DbHelperOleDb.ExecuteSclar(string.Format("select count({0}) from {1} {2}", strKey, strTableName, strWhere)));
    if ((recordCount % pageSize) > 0)
    {
    pageCount = recordCount / pageSize + 1;
    }
    else
    {
    pageCount = recordCount / pageSize;
    }
    if (pageIndex == 1 && pageIndex != pageCount)//第一页
    {
    cmdText.Append("select top " + pageSize + " " + strFieldName + " from " + strTableName + "" + strWhere + "" + strOrder + "");
    }
    else if (pageIndex > pageCount)//超出总页数
    {
    cmdText.Append("select top " + pageSize + " " + strFieldName + " from " + strTableName + " where 1=2 " + strOrder + "");
    }
    else if (pageIndex == pageCount && pageIndex != 1)//是最后一页
    {
    string recordT = string.Format("select top {0} {1} from {2} {3} {4} ", pageSize * pageIndex, strFieldName, strTableName, strWhere, strOrder);
    cmdText.Append("select top " + (recordCount - pageSize * (pageIndex - 1)) + " * from (" + recordT + ")" + strOrdert + "");

    }
    else//不是第一页
    {
    string recordT = string.Format("select top {0} {1} from {2} {3} {4} ", pageSize * pageIndex, strFieldName, strTableName, strWhere, strOrder);
    cmdText.Append("select top " + pageSize + " * from (" + recordT + ")" + strOrdert + "");

    }

    if (connection.State == ConnectionState.Closed)
    {
    connection.Open();
    }

    OleDbCommand cmd = new OleDbCommand(cmdText.ToString(), connection);
    OleDbDataAdapter da = new OleDbDataAdapter(cmd);

    if (connection.State == ConnectionState.Open)
    {
    connection.Close();
    }
    da.Fill(ReturnDs, "ds");
    }
    catch (System.Data.OleDb.OleDbException e)
    {
    throw new Exception(e.Message);
    }
    return ReturnDs;
    }
    #endregion
    
    
    2.dal层:
    View Code
     /// <summary>
    /// 分页获得DataTable
    /// </summary>
    public DataTable GetDataTable(int pageIndex, int pageSize, string strKey, string strFieldName, string strTableName, string strWhere, string strOrder,string strAscDesc, out int pageCount, out int recordCount)
    {
    return DbHelperOleDb.GetPager(pageIndex, pageSize, strKey, strFieldName, strTableName, strWhere, strOrder,strAscDesc, out pageCount, out recordCount).Tables[0];
    }
    
    
    bll层:
    View Code
     /// <summary>
    /// 分页获得DataTable
    /// </summary>
    public DataTable GetDataTable(int pageIndex, int pageSize, string strKey, string strFieldName, string strTableName, string strWhere, string strOrder, string strAscDesc, out int pageCount, out int recordCount)
    {
    return dal.GetDataTable(pageIndex, pageSize, strKey, strFieldName, strTableName, strWhere, strOrder,strAscDesc, out pageCount, out recordCount);
    }
    
    
    
    
    3.调用示例:
    View Code
     int pageCount = 0;
    int recordCount = 0;
    DataTable dt = bllArticles.GetDataTable(curPage,
    15,
    "TD_Articles.ID",
    "TD_Articles.*,TD_Base_Class.ClassName",
    "TD_Articles left join TD_Base_Class on TD_Articles.ClassID=TD_Base_Class.ID",
    sTj,
    "CreateDate",
    "0",
    out pageCount,
    out recordCount);
    
    

      

      

  • 相关阅读:
    计算机中丢失OPENGL.dll
    BAT或赌在当下或押在未来,谁是王者?
    singleton
    计算机原理扫盲
    汇编扫盲
    sublime text 3 使用过程总结记录
    sublime text3侧边栏主题不生效问题解决
    atom初体验
    Sublime Text 3 快捷键总结
    微信后台开发第一步:nodeJS+express接入微信后台详细教程
  • 原文地址:https://www.cnblogs.com/shanlin/p/2306389.html
Copyright © 2011-2022 走看看