62,040
社区成员
发帖
与我相关
我的任务
分享
DataPage dataPage = new DataPage();
dataPage.TableName = "User";
dataPage.CurrentPage = AspNetPager1.CurrentPageIndex;
dataPage.PageSize = AspNetPager1.PageSize;
dataPage.OrderBy = "UserId desc";
dataPage.Where = "UserId=" + userId;
/// <summary>
/// 用于数据分页的辅助类,结合分页存储过程一起使用
/// </summary>
[Serializable]
public class DataPage
{
#region 实例私有成员
private string _tableName = string.Empty; //表名
private string _fields = "*"; //查询字段
private string _orderBy = string.Empty; //排序字段
private string _where = string.Empty; //筛选条件
private int _pageSize = 10; //每页记录数
private int _currentPage = 0; //当前页码
private int _recordSum = 0; //总记录数
#endregion
#region 实例公共属性
/// <summary>
/// 查询表名
/// </summary>
public string TableName
{
get { return _tableName; }
set
{
//表名排除dbo.前缀
_tableName = value.ToUpper().Replace("DBO.", string.Empty);
}
}
/// <summary>
/// 查询字段,如ID,Name,Title或*,默认为*
/// </summary>
public string Fields
{
get { return _fields; }
set
{
if (this._orderBy.Trim() == string.Empty)
_fields = value;
else
{
CheckSortFields(value, this._orderBy);
_fields = value;
}
}
}
/// <summary>
/// 检查排序字段必须包含在查询字段中
/// </summary>
/// <param name="fields">查询字段</param>
/// <param name="sort">排序字段</param>
private void CheckSortFields(string fields, string sort)
{
string[] sortFields = sort.ToLower().Replace("asc", string.Empty).Replace("desc", string.Empty).Replace(" ", string.Empty).Split(',');
foreach (string str in sortFields)
if (fields.ToLower().IndexOf(str) < 0)
throw new ArgumentException("排序字段必须包含在查询字段中。");
}
/// <summary>
/// 排序字段,如id,name desc或空,默认为空(主键排序)
/// </summary>
public string OrderBy
{
get { return _orderBy; }
set
{
if (this._fields == string.Empty || this._fields.Contains("*"))
_orderBy = value;
else
{
CheckSortFields(this._fields, value);
_orderBy = value;
}
}
}
/// <summary>
/// 筛选字段,如ID=12 or name like '%accp'或空字符串
/// </summary>
public string Where
{
get { return _where; }
set { _where = value; }
}
/// <summary>
/// 每页记录数,默认值为10
/// </summary>
public int PageSize
{
get { return _pageSize; }
set
{
if (value <= 0)
throw new ArgumentException("每页记录数必须大于0");
_pageSize = value;
}
}
/// <summary>
/// 当前页码,默认值为0
/// </summary>
public int CurrentPage
{
get
{
//在存储过程中从1开始
return _currentPage;
}
set
{
if (value < 0)
throw new ArgumentException("当前页码必须大等于0");
_currentPage = value;
}
}
/// <summary>
/// 总记录数,从存储过程返回
/// </summary>
public int RecordSum
{
get { return _recordSum; }
set { _recordSum = value; }
}
#endregion
#region 补助属性
/// <summary>
/// 总页数
/// </summary>
public int PageSum
{
get
{
if (_recordSum % _pageSize == 0)
return _recordSum / _pageSize;
else
return _recordSum / _pageSize + 1;
}
}
/// <summary>
/// 本页记录数
/// </summary>
public int RecordThisPage
{
get
{
if (CurrentPage == PageSum) // 最后一页
return RecordSum - _pageSize * (CurrentPage - 1);
else
return _pageSize;
}
}
/// <summary>
/// 取得起始记录号
/// </summary>
/// <returns>起始记录号</returns>
public int First
{
get
{
return (CurrentPage - 1) * _pageSize + 1;
}
}
/// <summary>
/// 取得终止记录号
/// </summary>
/// <returns>终止记录号</returns>
public int Last
{
get
{
if (_recordSum == 0) // 无记录
return 0;
else if (CurrentPage == PageSum) // 最后一页
return RecordSum;
else
return _pageSize * CurrentPage;
}
}
/// <summary>
/// 是否是第一页
/// </summary>
public bool IsFirstPage
{
get { return CurrentPage == 1; }
}
/// <summary>
/// 是否是最后一页
/// </summary>
public bool IsLastPage
{
get
{
if (PageSum == 0) return true;
return CurrentPage == PageSum;
}
}
#endregion
}