namespace Entity
{
public interface IPagedList
{
/// <summary>
/// 记录数
/// </summary>
int TotalCount { get; set; }
/// <summary>
/// 页数
/// </summary>
int TotalPages { get; set; }
/// <summary>
/// 当前页
/// </summary>
int PageIndex { get; set; }
/// <summary>
/// 页面大小
/// </summary>
int PageSize { get; set; }
/// <summary>
/// 是否上一页
/// </summary>
bool IsPreviousPage { get; }
/// <summary>
/// 是否下一页
/// </summary>
bool IsNextPage { get; }
}
/// <summary>
/// 分页通用类
/// </summary>
/// <typeparam name="T"></typeparam>
public class PagedList<T> : List<T>, IPagedList
{
/// <summary>
/// 数据源为IQueryable的范型
/// </summary>
/// <param name="source">数据源</param>
/// <param name="index">当前页</param>
/// <param name="pageSize">每页显示多少条记录</param>
public PagedList(IQueryable<T> source, int index, int pageSize)
{
if (source != null) //判断传过来的实体集是否为空
{
int total = source.Count();
this.TotalCount = total;
this.TotalPages = total / pageSize; if (total % pageSize > )
TotalPages++; this.PageSize = pageSize;
if (index > this.TotalPages)
{
index = this.TotalPages;
}
if (index < )
{
index = ;
}
this.PageIndex = index;
this.AddRange(source.Skip((index - ) * pageSize).Take(pageSize).ToList()); //Skip是跳到第几页,Take返回多少条
}
} /// <summary>
/// 总页数
/// </summary>
public int TotalPages { get; set; }
/// <summary>
/// 总记录数
/// </summary>
public int TotalCount { get; set; }
/// <summary>
/// 当前页
/// </summary>
public int PageIndex { get; set; }
/// <summary>
/// 每页显示多少条记录
/// </summary>
public int PageSize { get; set; }
/// <summary>
/// 是否有上一页
/// </summary>
public bool IsPreviousPage { get { return (PageIndex > ); } }
/// <summary>
/// 是否有下一页
/// </summary>
public bool IsNextPage { get { return (PageIndex * PageSize) <= TotalCount; } } private NameValueCollection _AddParameters = new NameValueCollection();
/// <summary>
/// 分页参数
/// </summary>
public NameValueCollection AddParameters
{
get { return _AddParameters; }
set { _AddParameters = value; }
} } /// <summary>
/// PagedList扩展类
/// </summary>
public static class ExtendPagedList
{
/// <summary>
/// 返回PagedList<T>类型的IQueryable的扩展方法
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="linq"></param>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <returns></returns>
public static PagedList<T> ToPagedList<T>(this IQueryable<T> linq, int pageIndex, int pageSize)
{
return new PagedList<T>(linq, pageIndex, pageSize);
}
}
}

MVC分页控件之二,为IQueryable定义一个扩展方法,直接反回PagedList<T>结果集(转)的更多相关文章

  1. Mvc分页:为IQueryable定义一个扩展方法,直接反回PagedList<T>结果集

    namespace Entity{ public interface IPagedList { /// <summary> /// 记录数 /// </summary> int ...

  2. MVC——分页控件

    不管是什么类型的网站,分页都是必不可少的功能实现.在这里记录一下我自己接触过的分页控件: 一. MvcPager控件(记得项目里添加MvcPager.dll的引用) 这里面比较常用的就 ——@Html ...

  3. Android自己定义控件系列二:自己定义开关button(一)

    这一次我们将会实现一个完整纯粹的自己定义控件,而不是像之前的组合控件一样.拿系统的控件来实现.计划分为三部分:自己定义控件的基本部分,自己定义控件的触摸事件的处理和自己定义控件的自己定义属性: 以下就 ...

  4. MVC分页控件的使用

    1. 引用 using Webdiyer.WebControls.Mvc; 2. using Webdiyer.WebControls.Mvc; ) { )); } 3.数据来源 public cla ...

  5. MVC分页控件

    1.下载MvcPager.dll文件并引用到MVC项目中 2.在控制器中引用命名空间using Webdiyer.WebControls.Mvc; 3.获取数据集合,数据的总记录数(数据集合有多少条数 ...

  6. jquery 分页控件(二)

    上一章主要是关于分页控件的原理,代码也没有重构.在这一章会附上小插件的下载链接,插件主要就是重构逻辑部分,具体可以下载源文件看下,源代码也有注释.为了测试这个插件是能用的,我弄了个简单的asp.net ...

  7. asp.net mvc简单实现基于Razor的分页控件

    最近在写一些web应用了解了一下asp.net mvc发现的确好用,所以直接就干上了.不过在使用asp.net mvc的Razor模板的情况并不向传统webform那样可以使用控件.但从Razor的功 ...

  8. 给AspNetPager分页控件添加bootstrap样式

    AspNetPager分页控件算是比较好用的一个分页控件了.想要结合bootstrap使用,官方代码入口 .pagination a[disabled]{ color: #777;cursor: no ...

  9. jquery 分页控件2

    jquery 分页控件(二) 上一章主要是关于分页控件的原理,代码也没有重构.在这一章会附上小插件的下载链接,插件主要就是重构逻辑部分,具体可以下载源文件看下,源代码也有注释.为了测试这个插件是能用的 ...

随机推荐

  1. reqSUB错误

    ---- ERROR ----    Error in dispatcher subroutine reqSUB: Invalid PAR(1): 0502 上面是用adams/ca加载一个汽车模型时 ...

  2. 我理解的 js 的观察者模式 Observable

    我第一次看 四人帮 写的<设计模式>时一头雾水,现在也是,或许其是针对专业的程序员学习使用的. 通过对Ext / Backbone 源码的学习,可总结如下: 模式 - 就是对解决某一类特定 ...

  3. Windows Phone 7之XNA游戏:重力感应

    Windows Phone XNA游戏提供的重力传感器可以利用量测重力的原理判手机移动的方向,允许使用者利用摇动或甩动手机的方式控制游戏的执行,其原理和汽车的安全气囊相同,在侦测到汽车快速减速的时候立 ...

  4. 【wikioi】1922 骑士共存问题(网络流/二分图匹配)

    用匈牙利tle啊喂?和网络流不都是n^3的吗(匈牙利O(nm), isap O(n^2m) 但是isap实际复杂度很优的(二分图匹配中,dinic是O(sqrt(V)*E),不知道isap是不是一样. ...

  5. Qt中QUdpSocket序列化问题

    写了一个小的Qt网络程序,很简单,发送的网络消息除了字符串还有一个结构体.很简单的想到用memcpy()函数来将数据序列化为BYTE数组从而实现网络传输. 序列化是Java中一个概念,C中并没有,C+ ...

  6. 30个非常流行的提示信息插件(jQuery Tooltip Plugin)

    在网站的设计中,提示信息是非常细微的功能,但是起着非常重要的作用.如果你的网站中提示信息做的比较好,会给浏览者留下非常深刻的印象,同时也会起到非常好的网站宣传效果,下面介绍了30个比较流行提示信息插件 ...

  7. 利用窗口引用漏洞和XSS漏洞实现浏览器劫持

    ==Ph4nt0m Security Team==                        Issue 0x03, Phile #0x05 of 0x07 |=----------------- ...

  8. System-Defined Device Setup Classes Available to Vendors

    https://msdn.microsoft.com/en-us/library/windows/hardware/ff553426(v=vs.85).aspx

  9. 12. 求简单交错序列前N项和

    求简单交错序列前N项和 #include <stdio.h> int main() { int denominator, flag, i, n; double item, sum; whi ...

  10. Sublime Text3 中文汉化

    首先安装Package Control,如果已经安装过可以跳过此步骤.可以按照官网这里https://packagecontrol.io/installation 复制命令或者直接复制下面: impo ...