通用分页技术分析

  • 需要返回不同的类型的数据--采用泛型实现该操作
  • 需要提供不同的方法

    1. 上一页

    2. 上一页

    3. 第一页

    4. 最后一页

    5. 跳转到指定页

Demo 代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace NBAManagement
{
/// <summary>
/// 通过的分页类
/// </summary>
/// <typeparam name="T"></typeparam>
public class Paging<T>
{
public List<T> DataSource = new List<T>(); public int PageIndex { get; set; }
public int AllPage { get; set; }
public int EachCount { get; set; } public Paging(List<T> dataSource, int eachCount)
{
this.DataSource = dataSource;
this.AllPage = (int)Math.Ceiling((double)this.DataSource.Count / eachCount);
this.EachCount = eachCount;
this.PageIndex = 1;
}
//下一页
public List<T> Next()
{
PageIndex++;
if (this.PageIndex > AllPage)
PageIndex--;
return GetPage();
}
//上一页
public List<T> Provious()
{
PageIndex--;
if (this.PageIndex == 0)
PageIndex++;
return GetPage();
}
//第一页
public List<T> Fist()
{
this.PageIndex = 1;
return GetPage();
}
//最后一页
public List<T> End()
{
this.PageIndex = this.AllPage;
return GetPage();
} /// <summary>
/// 跳转到指定的页
/// </summary>
/// <param name="index"></param>
/// <returns></returns>
public List<T> GoTo(int index)
{
if (index <= 0)
index = 1;
if (index >= AllPage)
index = AllPage;
this.PageIndex = index;
return GetPage();
} /// <summary>
/// 获得当前页
/// </summary>
/// <returns></returns>
private List<T> GetPage()
{
return this.DataSource.Skip((PageIndex - 1) * EachCount).Take(EachCount).ToList();
}
}
}

后记

通过这样的一个类基本实现了大多数的情况下的分页操作(虽然可能性能不是很高),这里主要是运用了泛型的特性来帮助我们返回任意的对象集。只需要在UI中做一些简单的处理即可。

最新文章

  1. ISO
  2. RESTful API URI 设计: 判断资源是否存在?
  3. mysql常用操作语句
  4. jQuery Danmmu Player 弹幕视频
  5. mybatis 中#{}与${}的区别
  6. Windows资源管理器 已停止工作
  7. CLR via C#深解笔记三 - 基元类型、引用类型和值类型 | 类型和成员基础 | 常量和字段
  8. rabbitMq使用(mac平台)
  9. 定时每天执行前一天的数据导入oracle
  10. 【STL】【模拟】Codeforces 696A Lorenzo Von Matterhorn
  11. JavaScript 中的非真值
  12. hdu 2767 Proving Equivalences 强连通缩点
  13. 【高德地图API】那些年我们一起开发的APP—即LBS应用模式分享
  14. discuz 6.1.0F前台getshell(据说通用6.x , 7.x)
  15. git fsck -- 一致性检查
  16. MySQL事务-ROLLBACK,COMMIT用法详解
  17. .net的retrofit--WebApiClient库深入篇
  18. uboot各种目录下的文件作用
  19. R语言︱情感分析—基于监督算法R语言实现(二)
  20. Java中关于AbstractQueuedSynchronizer的入门(二)

热门文章

  1. linux命令总结top命令
  2. Gulp 笔记
  3. 何凯文每日一句打卡||DAY9
  4. 流媒体技术学习笔记之(七)进阶教程OBS参数与清晰度流畅度的关系
  5. jenkins设置CSRF 协议(CRUMB值设置)
  6. Javascript中与Scroll有关的方法
  7. 第9月第5天 AVVideoAverageBitRateKey
  8. CF11D A Simple Task(状压DP)
  9. Python外部脚本调用Django项目Model表
  10. 网络图片转换到本地并转换成base64位