您的位置:首页 > 编程语言 > C#

C#分页

2016-01-03 14:04 381 查看
/// <summary>
/// </summary>
/// <param name="field">分页依据的字段(单表一般为主键)</param>
/// <param name="sort">分页的排序规则</param>
/// <param name="pageNo">页码</param>
/// <param name="pageSize">每页条数</param>
/// <param name="total">总记录数</param>
/// <returns></returns>
public DataSet UserTermInfo( string field, string sort, int pageNo, int pageSize, out int total)
{

StringBuilder sbd = new StringBuilder(@"select a.*,b.DeptName from dbo.UserInfo a,dbo.Department b
where a.deptID=b.deptID ");

     string strSql = GetPagerSql(sbd.ToString(), field, sort, pageNo, pageSize);
DataSet ds = SqlHelper.Instance.ExecSqlDataSet(strSql);
total = Convert.ToInt32(ds.Tables[1].Rows[0][0]);
return ds;
}

/// <summary>
/// 获取分页的sql语句
/// </summary>
/// <param name="sql">分页前的查询sql语句</param>
/// <param name="field">分页依据的字段(单表一般为主键)</param>
/// <param name="sort">分页的排序规则</param>
/// <param name="pageNo">页码</param>
/// <param name="pageSize">每页数据条数</param>
/// <returns>实现了分页功能的sql语句</returns>
private static string GetPagerSql(string sql, string field, string sort, int pageNo, int pageSize)
{
return string.Format(
@"select * from (
select *,row_number() over (order by [{0}] {1}) __PagerRowNoField from (
{2}
) s
) t where __PagerRowNoField between {3} and {4};
select count(*) from ({2}) v",
field, sort, sql, (pageNo - 1) * pageSize + 1, pageNo * pageSize);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: