欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C#构建分页应用的方法分析

程序员文章站 2022-09-04 10:41:39
本文实例讲述了c#构建分页应用的方法。分享给大家供大家参考,具体如下: 1、sql语句 with [temptableforstockic] as ( s...

本文实例讲述了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#相关内容感兴趣的读者可查看本站专题:《c#字符串操作技巧总结》、《c#数组操作技巧总结》、《c#中xml文件操作技巧汇总》、《c#常见控件用法教程》、《winform控件用法总结》、《c#数据结构与算法教程》及《c#面向对象程序设计入门教程

希望本文所述对大家c#程序设计有所帮助。