ASP.NET+SQLServer2008分页,方面简单实用

/// 
/// 分页获取数据列表
/// 
/// 条件,以and开头
/// 排序方式
/// 当前页-1
/// 分页尺寸
/// 
public DataSet GetListByPage(string strWhere, string orderby, int pageindex, int pagesize)
{
    string tablename = "t_JinYinShangHu";
    StringBuilder strSql = new StringBuilder();

    strSql.Append("select top " + pagesize + " * from " + tablename + " where id not in ");
    strSql.Append(" (");
    strSql.Append("     select top " + pageindex * pagesize + " id from " + tablename + " order by " + orderby);
    strSql.Append(" )");
    strSql.Append(strWhere);
    strSql.Append(" order by " + orderby);
    return DbHelperSQL.Query(strSql.ToString());
}

方法二、

/// 
/// 分页获取数据列表
/// 
public DataSet GetListByPage(string strWhere, string orderby, int startIndex, int endIndex)
{
    StringBuilder strSql = new StringBuilder();
    strSql.Append("SELECT * FROM ( ");
    strSql.Append(" SELECT ROW_NUMBER() OVER (");
    if (!string.IsNullOrEmpty(orderby.Trim()))
    {
        strSql.Append("order by T." + orderby);
    }
    else
    {
        strSql.Append("order by T.ID desc");
    }
    strSql.Append(")AS Row, T.*  from t_Real_Estate T ");//表名在这里,也可以作为参数传进来
    if (!string.IsNullOrEmpty(strWhere.Trim()))
    {
        strSql.Append(" WHERE " + strWhere);
    }
    strSql.Append(" ) TT");
    strSql.AppendFormat(" WHERE TT.Row between {0} and {1}", startIndex, endIndex);
    return dbSys.ExecuteDataSet(strSql.ToString());
}


列表页使用方法:

int start = AspNetPager1.PageSize * (AspNetPager1.CurrentPageIndex - 1) + 1;//这里需要加1
int end = AspNetPager1.PageSize * AspNetPager1.CurrentPageIndex;
//Response.Write(start.ToString() + "," + end.ToString());
rptDataList.DataSource = new dProduct().GetListByPage(where, " Sort asc,Joindate desc,Hits desc", start, end).Tables[0];
rptDataList.DataBind();

还有一种比较通用的存储过程分页,不如sql灵活,暂时不考虑。







你可能感兴趣的:(ASP.NET)