本文实例讲述了c#构建分页应用的方法。分享给大家供大家参考,具体如下:
1、sql语句
with [temptableforstockic] as ( select *,row_number() over (order by createtime desc) as rownumber from [stockic] where 1=1 and model = 'fty765op' ) select * from [temptableforstockic] where rownumber between 1 and 10
2、后台方法
/// <summary> /// 表名 /// </summary> private const string _tablenane = "stockic"; /// <summary> /// 获取库存列表 /// </summary> public list<stockicresult> getstockiclist(stockicparam param) { list<stockicresult> list = new list<stockicresult>(); string sql = "with [temptablefor{0}] as"; sql += " (select *,row_number() over (order by {1}) as rownumber from [{0}] where 1=1 {2})"; sql += " select * from [temptablefor{0}] where rownumber between {3} and {4}"; stringbuilder sqlcondition = new stringbuilder(); list<sqlparameter> sqlparams = new list<sqlparameter>(); //型号 if (!string.isnullorempty(param.model)) { sqlcondition.appendformat(" and model like '%{0}%'", param.model); } //开始时间 if (param.begintime.hasvalue) { sqlcondition.append(" and createtime >= @begintime"); sqlparams.add(new sqlparameter("@begintime", param.begintime.value)); } //结束时间 if (param.endtime.hasvalue) { sqlcondition.append(" and createtime < @endtime"); sqlparams.add(new sqlparameter("@endtime", param.endtime.value.adddays(1))); } //排序 if (string.isnullorwhitespace(param.orderby)) { param.orderby = " createtime desc"; } //分页 param.pageindex = param.pageindex - 1; int64 startnumber = param.pageindex * param.pagesize + 1; int64 endnumber = startnumber + param.pagesize - 1; //拼装sql sql = string.format(sql, _tablenane, param.orderby, sqlcondition, startnumber, endnumber); //执行sql语句 dataset dataset = dbhelper.getreader(sql.tostring(), sqlparams.toarray()); list = trantolist(dataset); return list; }
注意:dbhelper.getreader()方法、trantolist()方法等请自己完善。
一些计算方法
//分页 int64 startnumber = (param.pageindex - 1) * param.pagesize + 1; int64 endnumber = startnumber + param.pagesize - 1; //总页数 = (数据总数 + 分页大小 -1) / 分页大小 totalpage = (totalcount + pagesize - 1) / pagesize;
以上就是c#构建分页应用的实例方法分析的详细内容。
