asp.net Repeater之非常好的数据分页

2019-05-11 21:49:00于海丽

/// <param name="Where">存储过程分页中的条件 不需要Where</param>
/// <returns></returns>
public System.Data.DataTable getObjectRecordCount(bool IsProc, string PorcedureName, string TableName, string TableCollName, string OrderBy, string Where)
{
System.Data.DataTable DataTables = new System.Data.DataTable();

if (IsProc)
{
DataTables = Sql_Function.SqlDb.ReturnDataTable("" + PorcedureName + " '" + TableName + "','" + TableCollName + "'," + CurrentPage + "," + PageSize + ",'" + ShowTableCollName.Replace("'", "") + "','" + OrderBy + "','" + Where + "'");
}
else//普通分页
{
string StrSql = string.Format("select {0} from {1} where {2} is not null", ShowTableCollName, TableName, TableCollName);

if (Where != null && Where.Trim().Replace("'", "") != "")
{
StrSql += " and " + Where.Trim().Replace("'", "");
}

if (OrderBy != null && OrderBy.Trim().Replace("'", "") != "")
{
StrSql += " order by " + OrderBy.Trim().Replace("'", "");
}

try
{
DataTables = Sql_Function.SqlDb.ReturnDataTablePage(StrSql, CurrentPage, PageSize, "ReturnDataTable");
}
catch
{
DataTables = null;
}
}

return DataTables;
}

/// <summary>
/// 分页函数
/// </summary>
/// <param name="TotalRecordCount">总记录数</param>
/// <param name="Url">Url地址</param>
/// <param name="CurrentPage">当前页数</param>
public string Pagination()
{
int allpage = 0;//总页数

int next = 0;//下页标记

int pre = 0;//上一页标记

int startcount = 0;//开始页码数

int endcount = 0;//结束页码数

string pagestr = "";//返回分页结果集

if (CurrentPage < 1) { CurrentPage = 1; }

//计算总页数
if (PageSize != 0)
{
allpage = (RecordCount / PageSize);

allpage = ((RecordCount % PageSize) != 0 ? allpage + 1 : allpage);

allpage = (allpage == 0 ? 1 : allpage);
}

next = CurrentPage + 1;

pre = CurrentPage - 1;

if (PageNumberCount % 2 == 0)
{
startcount = (CurrentPage + PageNumberCount / 2) > allpage ? allpage - (PageNumberCount - 1) : CurrentPage - (PageNumberCount / 2 - 1);

endcount = CurrentPage < PageNumberCount / 2 ? PageNumberCount : CurrentPage + PageNumberCount / 2;

}
else
{
startcount = (CurrentPage + PageNumberCount / 2) > allpage ? allpage - (PageNumberCount - 1) : CurrentPage - (PageNumberCount / 2 - 1);

endcount = CurrentPage < PageNumberCount / 2 ? PageNumberCount : CurrentPage + PageNumberCount / 2 + 1;

}

if (startcount < 1) { startcount = 1; } //为了避免输出的时候产生负数,设置如果小于1就从序号1开始

if (allpage < endcount) { endcount = allpage; }//页码+5的可能性就会产生最终输出序号大于总页码,那么就要将其控制在页码数之内