C#构建分页应用的方法分析
本文实例讲述了C#构建分页应用的方法。分享给大家供大家参考,具体如下:
1、SQL语句
WITH[temptableforStockIC]AS( SELECT*,ROW_NUMBER()OVER(ORDERBYCreateTimeDESC)ASRowNumberFROM[StockIC]WHERE1=1ANDModel='FTY765OP' ) SELECT*FROM[temptableforStockIC]WHERERowNumberBETWEEN1AND10
2、后台方法
///<summary>
///表名
///</summary>
privateconststring_tableNane="StockIC";
///<summary>
///获取库存列表
///</summary>
publicList<StockIcResult>GetStockIcList(StockIcParamparam)
{
List<StockIcResult>list=newList<StockIcResult>();
stringsql="WITH[temptablefor{0}]AS";
sql+="(SELECT*,ROW_NUMBER()OVER(ORDERBY{1})ASRowNumberFROM[{0}]WHERE1=1{2})";
sql+="SELECT*FROM[temptablefor{0}]WHERERowNumberBETWEEN{3}AND{4}";
StringBuildersqlCondition=newStringBuilder();
List<SqlParameter>sqlParams=newList<SqlParameter>();
//型号
if(!String.IsNullOrEmpty(param.Model))
{
sqlCondition.AppendFormat("ANDModelLIKE'%{0}%'",param.Model);
}
//开始时间
if(param.BeginTime.HasValue)
{
sqlCondition.Append("ANDCreateTime>=@BeginTime");
sqlParams.Add(newSqlParameter("@BeginTime",param.BeginTime.Value));
}
//结束时间
if(param.EndTime.HasValue)
{
sqlCondition.Append("ANDCreateTime<@EndTime");
sqlParams.Add(newSqlParameter("@EndTime",param.EndTime.Value.AddDays(1)));
}
//排序
if(String.IsNullOrWhiteSpace(param.OrderBy))
{
param.OrderBy="CreateTimeDESC";
}
//分页
param.PageIndex=param.PageIndex-1;
Int64startNumber=param.PageIndex*param.PageSize+1;
Int64endNumber=startNumber+param.PageSize-1;
//拼装SQL
sql=String.Format(sql,_tableNane,param.OrderBy,sqlCondition,startNumber,endNumber);
//执行SQL语句
DataSetdataSet=DBHelper.GetReader(sql.ToString(),sqlParams.ToArray());
list=TranToList(dataSet);
returnlist;
}
注意:DBHelper.GetReader()方法、TranToList()方法等请自己完善。
一些计算方法
//分页 Int64startNumber=(param.PageIndex-1)*param.PageSize+1; Int64endNumber=startNumber+param.PageSize-1; //总页数=(数据总数+分页大小-1)/分页大小 TotalPage=(TotalCount+PageSize-1)/PageSize;
更多关于C#相关内容感兴趣的读者可查看本站专题:《C#字符串操作技巧总结》、《C#数组操作技巧总结》、《C#中XML文件操作技巧汇总》、《C#常见控件用法教程》、《WinForm控件用法总结》、《C#数据结构与算法教程》及《C#面向对象程序设计入门教程》
希望本文所述对大家C#程序设计有所帮助。