MVC分页控件之二,为IQueryable定义一个扩展方法,直接反回PagedList<T>结果集(转)
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>结果集(转)的更多相关文章
- Mvc分页:为IQueryable定义一个扩展方法,直接反回PagedList<T>结果集
namespace Entity{ public interface IPagedList { /// <summary> /// 记录数 /// </summary> int ...
- MVC——分页控件
不管是什么类型的网站,分页都是必不可少的功能实现.在这里记录一下我自己接触过的分页控件: 一. MvcPager控件(记得项目里添加MvcPager.dll的引用) 这里面比较常用的就 ——@Html ...
- Android自己定义控件系列二:自己定义开关button(一)
这一次我们将会实现一个完整纯粹的自己定义控件,而不是像之前的组合控件一样.拿系统的控件来实现.计划分为三部分:自己定义控件的基本部分,自己定义控件的触摸事件的处理和自己定义控件的自己定义属性: 以下就 ...
- MVC分页控件的使用
1. 引用 using Webdiyer.WebControls.Mvc; 2. using Webdiyer.WebControls.Mvc; ) { )); } 3.数据来源 public cla ...
- MVC分页控件
1.下载MvcPager.dll文件并引用到MVC项目中 2.在控制器中引用命名空间using Webdiyer.WebControls.Mvc; 3.获取数据集合,数据的总记录数(数据集合有多少条数 ...
- jquery 分页控件(二)
上一章主要是关于分页控件的原理,代码也没有重构.在这一章会附上小插件的下载链接,插件主要就是重构逻辑部分,具体可以下载源文件看下,源代码也有注释.为了测试这个插件是能用的,我弄了个简单的asp.net ...
- asp.net mvc简单实现基于Razor的分页控件
最近在写一些web应用了解了一下asp.net mvc发现的确好用,所以直接就干上了.不过在使用asp.net mvc的Razor模板的情况并不向传统webform那样可以使用控件.但从Razor的功 ...
- 给AspNetPager分页控件添加bootstrap样式
AspNetPager分页控件算是比较好用的一个分页控件了.想要结合bootstrap使用,官方代码入口 .pagination a[disabled]{ color: #777;cursor: no ...
- jquery 分页控件2
jquery 分页控件(二) 上一章主要是关于分页控件的原理,代码也没有重构.在这一章会附上小插件的下载链接,插件主要就是重构逻辑部分,具体可以下载源文件看下,源代码也有注释.为了测试这个插件是能用的 ...
随机推荐
- 自己的一份Spring的xml配置文件
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.spr ...
- #region 自适应屏幕分辨率
#region 自适应屏幕分辨率 [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] public ...
- CentOS 多网卡绑定bonding
1.查看环境 ip a |grep -v lo 2.加载bonding模块 modprobe bonding 3.开机自动加载模块到内核 echo 'modprobe bonding &> ...
- JAVA计算文件大小
File f = new File(save_path+File.separator + resouce_id+".zip"); FileInputStream fis = new ...
- 【BZOJ】1146: [CTSC2008]网络管理Network(树链剖分+线段树套平衡树+二分 / dfs序+树状数组+主席树)
http://www.lydsy.com/JudgeOnline/problem.php?id=1146 第一种做法(时间太感人): 第二种做法(rank5,好开心) ================ ...
- C#页面添加提交数据后跳出小弹窗的功能
很简单,将小弹窗部分写进一个div,利用div的visible属性去控制是否显示,首先默认为false; 当后台程序执行到插入数据完成后,设置session状态值为‘yes’ 判断,当session状 ...
- sum()over()和count()over()分析函数
创建测试表 ),sales ),dest ),dept ),revenue number); 插入测试数据 ); ); ); ); ); ); ); commit; 查看表记录 SQL> sel ...
- 不要在init和dealloc函数中使用accessor
不要在init和dealloc函数中使用accessor 文章目录 Objective-C 2.0 增加了 dot syntax,用于简单地调用成员变量的 accessor.相当于 java 的 ge ...
- mysql外键实战
一.基本概念 1.MySQL中“键”和“索引”的定义相同,所以外键和主键一样也是索引的一种.不同的是MySQL会自动为所有表的主键进行索引,但是外键字段必须由用户 进行明确的索引.用于外键关系的字段必 ...
- ORA-12518: TNS: 监听程序无法分发客户机连接
在团队成员增多时,经常出现“无法分发客户端连接”等问题.在网上搜索一番后,最终解决了该问题,现将解决方案总结如下,以供参考和以后备用. 原因:团队成员增多,原有数据库设置不够用,导致连接plsql和启 ...