C#简单的通用分页
通用分页技术分析
- 需要返回不同的类型的数据--采用泛型实现该操作
- 需要提供不同的方法
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中做一些简单的处理即可。
C#简单的通用分页的更多相关文章
- 通过 DynamicLinq 简单实现 N-Tier 部署下的服务端数据库通用分页
通过 DynamicLinq 简单实现 N-Tier 部署下的服务端数据库通用分页 YbSoftwareFactory 的 YbRapidSolution for WinForm 插件使用CSLA.N ...
- 用Java实现异构数据库的高效通用分页查询功能
不同数据库的分页查询语句有着较大区别,其中MySQL数据的limit offset语法最为简单,而SQL Server数据库和Oracle数据库的分页就比较复杂了. 网上常见的SQL Server和O ...
- PHP通用分页(Pager)类
三种不同展示方式 附上style~ 1. 效果图1 2.效果图2 3. 效果图3 4. 分页类主体 <?php /** * PHP通用分页类 * show(2) 1 ... 62 63 6 ...
- ReactJS实现的通用分页组件
大家多少都自己写过各种版本的分页工具条吧,像纯服务版的,纯jsWeb板的,Angular版的,因为这个基础得不能再基础的功能太多地方都会用到,下面我给出以个用ReactJS实现的版本,首先上图看下效果 ...
- SQL Server 2008 通用分页存储过程
1.alert USE [数据库名称] GO /****** Object: StoredProcedure [dbo].[dbTab_PagerHelper] Script Date: 08/22/ ...
- 一个简单的通用Makefile实现
一个简单的通用Makefile实现 Makefile是Linux下程序开发的自动化编译工具,一个好的Makefile应该准确的识别编译目标与源文件的依赖关系,并且有着高效的编译效率,即每次重新ma ...
- SQL Server利用RowNumber()内置函数与Over关键字实现通用分页存储过程(支持单表或多表结查集分页)
SQL Server利用RowNumber()内置函数与Over关键字实现通用分页存储过程,支持单表或多表结查集分页,存储过程如下: /******************/ --Author:梦在旅 ...
- 支持DISTINCT的通用分页存储过程(SQL2005)
/****** 对象: StoredProcedure [dbo].[P_CommonPagination] 脚本日期: 07/22/2009 10:22:01 ******/ SET ANSI_NU ...
- ibernate学习笔记5---实体类或属性名与数据库关键字冲突、hql命名参数、hql实现通用分页
一.实体类或属性名与数据库关键字冲突问题1.实体类名与数据库中的关键字冲突比如:实体表User与oracle中的系统表冲突解决方式1:在xml中添加table属性,指定表名,使其不与name默认相等 ...
随机推荐
- 汉诺塔hanoi
问题描述: 有一个梵塔,塔内有三个座A.B.C,A座上有诺干个盘子,盘子大小不等,大的在下,小的在上(如图). 把这些个盘子从A座移到C座,中间可以借用B座但每次只能允许移动一个盘子,并且在移动过程中 ...
- php 访问错误日志
/usr/local/php/var/log/php-fpm.log」—————————
- css拾遗(一)(inline-block,absolute)
一:inline-block中不要嵌套其他block标签,不然会破坏布局 <style> .left{ float:left; } .hide{ display:none; } a{ di ...
- telegraf、influxDB、Grafana的安装与基本使用
目的理解influxDB的数据收集原理和方法为使用grafana分析数据及展示结作好准备介绍[收集数据] Telegraf 是一个用 Go 编写的代理程序,可收集系统和服务的统计数据,并写入到 Inf ...
- TTPRequest 提示#import <libxml/HTMLparser.h>找不到 的解决方法
本文永久地址为http://www.cnblogs.com/ChenYilong/p/3984251.html ,转载请注明出处. ASIHTTPRequest 或者AFNetwork提示的#impo ...
- c++刷题(43/100)矩阵旋转打印
题目1:矩阵旋转打印 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则 ...
- 关闭ios弹出框:“would like to use your current location”
图一: 图二: 使用cordova生成ios项目,首次打开获取用户定位时会弹出两次对话框,关闭图二中对话框方法: document.addEventListener("deviceready ...
- 【配置】Spring和MyBatis整合
spring配置文件: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="h ...
- input文本框禁止修改文本——disabled和readonly属性的作用及区别
1.input文本框禁止修改文本 disabled属性:<input type="text" name="name" value="xxx&qu ...
- Submatrix Sum
Given an integer matrix, find a submatrix where the sum of numbers is zero. Your code should return ...