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

本文实例讲述了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#程序设计有所帮助。

(0)

相关推荐

  • C# DataTable分页处理实例代码

    有时候我们从数据库获取的数据量太大,而我们不需要一次性显示那么多的时候,我们就要对数据进行分页处理了,让每页显示不同的数据. public DataTable GetPagedTable(DataTable dt, int PageIndex, int PageSize)//PageIndex表示第几页,PageSize表示每页的记录数 { if (PageIndex == 0) return dt;//0页代表每页数据,直接返回 DataTable newdt = dt.Copy(); new

  • 适用于WebForm Mvc的Pager分页组件C#实现

    本文为大家分享了自己写的一个Pager分页组件,WebForm,Mvc都适用,具体内容如下 分页控件其实就是根据链接在页面间传递参数,因为我看到MVC中你可以看到这样传递参数的new {para=val}这种方式传递参数,于是我想到用可以模仿这种传递参数的方式,那就用dynamic来作为参数对象传递. 下面是附上我写的具体的实现的代码 数据处理代码: 1.定义IPagedList接口 using System; using System.Collections.Generic; using Sy

  • C#中常用的分页存储过程小结

    表中主键必须为标识列,[ID] int IDENTITY (1,1)//每次自增一 1.分页方案一:(利用Not In和SELECT TOP分页) 语句形式: 复制代码 代码如下: SELECT TOP 10 * FROM TestTable WHERE (ID NOT IN (SELECT TOP 20 id FROM TestTable ORDER BY id)) ORDER BY ID SELECT TOP 页大小 * FROM TestTable WHERE (ID NOT IN (SE

  • C#拼接SQL语句 用ROW_NUMBER实现的高效分页排序

    如果项目中要用到数据库,铁定要用到分页排序.之前在做数据库查询优化的时候,通宵写了以下代码,来拼接分页排序的SQL语句 复制代码 代码如下: /// <summary> /// 单表(视图)获取分页SQL语句 /// </summary> /// <param name="tableName">表名或视图名</param> /// <param name="key">唯一键</param> //

  • C#基于数据库存储过程的AJAX分页实例

    本文实例讲述了C#基于数据库存储过程的AJAX分页实现方法.分享给大家供大家参考.具体如下: 首先我们在数据库(SQL Server)中声明定义存储过程 复制代码 代码如下: use sales    --指定数据库    if(exists(select * from sys.objects where name='proc_location_Paging')) --如果这个proc_location_paging存储过程存在则删除  drop proc proc_location_Pagin

  • 基于jquery的分页控件(C#)

    JS代码: Code: 复制代码 代码如下: var _MaxPageSize = 0; var _PageSize = 5; var _IsUpDown = false; function InitPage(funName, currentPageSize, maxPageSize, pageSize, isUpDown) { _FunName = funName; _CurrentPageSize = currentPageSize; _MaxPageSize = maxPageSize;

  • c#分页读取GB文本文件实例

    本文实例讲述了c#分页读取GB文本文件的方法.分享给大家供大家参考.具体如下: 一.应用场景: ① .我在做BI开发测试的时候,有可能面对source文件数GB的情况,如果使用一般的文本编辑器,则会卡死,或要等很久才能显示出来. ② .有时候,我们使用ascii(01)或ascii(02)作为行或列的分隔符,这样的临时文件用于导数据到DB,如果文件导入过程中有错误,需要查看文件 的时候,普通的编辑器不支持换行,则会很恐怖. 为解决这两个需求,我使用c#完成了一个简单的winform的应用程序.

  • C#实现分页组件的方法

    分页无论是前端和后端,基本都有广泛应用!下面通过一个小小案例完成这个分页效果: 参数含义: string urlFormat: 要传给服务器端的URL地址格式,方便在点超链接时进行相应的跳转 long totalSize:     总的数据条数. long pageSize:    每页多少条数据 long currentPage: 当前的页数 后面通过具体的一个案例来用这个分页方法: 一.分页方法: /// <summary> /// 生成页码的html /// </summary&g

  • c#分页显示服务器上指定目录下的所有图片示例

    c#分页显示服务器上指定目录下的所有图片 复制代码 代码如下: <%@ Page Language="C#" EnableViewState="false" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

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

    本文实例讲述了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 BETWE

  • thinkPHP5分页功能实现方法分析

    本文实例讲述了thinkPHP5分页功能实现方法.分享给大家供大家参考,具体如下: 其实分页自身的内容也不是很多.不过牵扯到样式的问题感觉挺烦.于是找到了分页类看了一下.把大体的结构说一下.如果有需要修改页面样式的可以自行修改样式.最好提前备份,防止意外. 首先是分页的调用,tp5的调用相对非常容易 $mod = new \app\index\model\Blogmsg(); $mo = $mod->paginate(1,14); $this->assign('list', $mo); //

  • PHP分页显示的方法分析【附PHP通用分页类】

    本文实例讲述了PHP分页显示的方法.分享给大家供大家参考,具体如下: <?php header("content-type:text/html;charset=utf-8"); $currentpage = 1; if(isset($_GET['page'])) $currentpage = $_GET['page']; //连接数据库 $link = mysql_connect("localhost","root",""

  • thinkphp5框架前后端分离项目实现分页功能的方法分析

    本文实例讲述了thinkphp5框架前后端分离项目实现分页功能的方法.分享给大家供大家参考,具体如下: 方法一 利用tp5提供的paginate方法实现自动分页 参数 page第几页,paginate分页方法会自动获取 size  每页数量 代码 /** * Notes:消费记录 * Date: 2019/6/25 * Time: 15:43 * @param Request $request * @return \think\response\Json */ public function g

  • TP3.2框架分页相关实现方法分析

    本文实例讲述了TP3.2框架分页相关实现方法.分享给大家供大家参考,具体如下: 需要用到分页的继承这个控制器即可 <?php namespace Home\Controller; use Think\Controller; class BaseController extends Controller { /** * 基础分页的相同代码封装,使前台的代码更少 * @param $count 要分页的总记录数 * @param int $pagesize 每页查询条数 * @return \Thi

  • MyBatisPlus+Lombok实现分页功能的方法详解

    目录 一.Lombok 1.添加Lombok依赖 2.安装Lombok插件 3.模型类上添加注解 二.分页功能 1.调用方法传入参数获取返回值 2.设置分页拦截器 3.运行测试程序 一.Lombok 从上一篇博客可看出,DAO接口类的编写变得简单,反过来看模型,编写还需要(私有属性.setter...getter...方法.toString方法.构造函数等内容),对于模型类有什么优化方法,可以用Lombok. 概念:Lombok,一个Java类库,提供了一组注解,简化POJO实体类开发. 使用步

  • Sql Server 2012 分页方法分析(offset and fetch)

    其中 offset and fetch 最重要的新特性是 用来 分页,既然要分析 分页,就肯定要和之前的分页方式来比较了,特别是 Row_Number() 了,在比较过程中,发现了蛮多,不过最重要的,通过比较本质,得出了优劣,也和大家一起分享下. 准备工作,建立测试表:Article_Detail,主要是用来存放一些文章信息,测试的时间,都是从网易上面转载的新闻,同时,测试表数据字段类型是比较均匀的,为了更好的测试,表结构如下图: 内容: 数据量:129,991 条记录 语法分析 1. NTIL

  • Laravel5.1 框架分页展示实现方法实例分析

    本文实例讲述了Laravel5.1 框架分页展示实现方法.分享给大家供大家参考,具体如下: Laravel为我们提供了一套分页的逻辑,我们无需自己实现分页逻辑,只需要执行几个简单的方法就能实现漂亮的分页. 1 simplePaginate 这是一种只显示上一页下一页的样式分页,我们来看看怎么用: class PostController extends Controller { public function index() { // $posts = Post::simplePaginate(

  • 分模块构建Maven工程的方法步骤

    分模块构建Maven工程Demo 1.分模块构建Maven分析 在企业项目开发过程中,由于项目规模庞大,业务复杂,参与的人员比较多,一般会通过合理的模块拆分将一个大型的项目拆分为N多个小模块,分别进行开发.而且拆分出的模块可以非常容易的被其他模块复用. 常见的拆分方式有两种: 第一种:按照业务模块进行拆分,每个模块拆分成一个maven工程,例如将一个项目分为用户模块.订单模块.购物车模块等,每个模块对应就是一个maven工程 第二种:按照层进行拆分,譬如持久层.业务层.表现层等,每个层对应就是一

  • C#用表达式树构建动态查询的方法

    前文介绍了C#中表达式树的基本知识,在实际中,表达式树有很多用法,这里举几个例子,说明如何使用表达式树构建动态查询,从而扩展LINQ的查询方法. 在LINQ中,只要数据源实现了IQuerable<T>接口,表达式树就可以用来表示结构化查询.比如,LINQ提供了用来查询关系数据源的IQueryable<T>接口的实现,C#编译器在执行这类数据源查询时,会在运行时生成表达式树,然后,查询会遍历表达式树的数据结构,然后将其转换成针对特定数据源的合适的查询语言. 下面的几个例子演示了如何使

随机推荐