BootstrapPagination.cshtml

@model PaginationModel
<div class="pagination">
<ul>
@foreach (var link in Model.PaginationLinks)
{
@BuildLink(link)
}
</ul>
</div> @helper BuildLink(PaginationLink link)
{
var liBuilder = new TagBuilder("li");
if (link.IsCurrent)
{
liBuilder.MergeAttribute("class", "active");
}
if (!link.Active)
{
liBuilder.MergeAttribute("class", "disabled");
} var aBuilder = new TagBuilder("a");
if (link.PageIndex != null) {
aBuilder.MergeAttribute("data-page", link.PageIndex.Value.ToString());
}
if (link.Url == null)
{
//aBuilder.MergeAttribute("href", "#");
}
else
{
aBuilder.MergeAttribute("href", link.Url);
aBuilder.AddCssClass("paging");
}
if (link.DisplayText == "«")
{
aBuilder.SetInnerText("←");
}
else if (link.DisplayText == "»")
{
aBuilder.SetInnerText("→");
}
else
{
aBuilder.SetInnerText(link.DisplayText);
}
liBuilder.InnerHtml = aBuilder.ToString(); @Html.Raw(liBuilder.ToString())
}

PaginatedList.cs

   public class PaginatedList<T> : List<T> {
public int Offset { get; private set; }
public int PageIndex { get; private set; }
public int PageSize { get; private set; }
public int TotalCount { get; private set; }
public int TotalPages { get; private set; } /// <summary>
/// For manually paing.
/// </summary>
/// <param name="source">The result of current page</param>
/// <param name="totalCount"></param>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
public PaginatedList(IEnumerable<T> source, int totalCount, int pageIndex, int pageSize)
{
Offset = pageIndex * pageSize;
PageIndex = pageIndex;
PageSize = pageSize;
TotalCount = totalCount;
TotalPages = (int)Math.Ceiling(TotalCount / (double)PageSize); this.AddRange(source);
} public PaginatedList(IQueryable<T> source, int pageIndex, int pageSize) {
Offset = pageIndex * pageSize;
PageIndex = pageIndex;
PageSize = pageSize;
TotalCount = source.Count();
TotalPages = (int)Math.Ceiling(TotalCount / (double)PageSize); this.AddRange(source.Skip(PageIndex * PageSize).Take(PageSize));
} public PaginatedList(IQueryable<T> source, int pageSize, int? offset = null, int? pageIndex = null) {
if (offset != null) {
Offset = offset.Value;
PageIndex = (int)Math.Ceiling((decimal)Offset / pageSize);
} else if (pageIndex != null) {
Offset = pageIndex.Value * pageSize;
PageIndex = pageIndex.Value;
} else {
//offset = null and pageIndex = null
throw new ArgumentNullException("offset and pageIndex");
}
PageSize = pageSize;
TotalCount = source.Count();
TotalPages = (int)Math.Ceiling(TotalCount / (double)PageSize); this.AddRange(source.Skip(Offset).Take(PageSize));
} public bool HasPreviousPage {
get {
return (Offset > );
}
} public bool HasNextPage {
get {
return (Offset + PageSize < TotalCount);
}
} }

public PaginatedList<classname> classnameList { get; set; }

classnameList = new PaginatedList<EventCallDetail>(classList, count, (pageIndex > 0) ? pageIndex - 1 : 0, PageSize);

@Html.Pager(PageSize, PageIndex + 1, classnameList.TotalCount).Options(o => o.DisplayTemplate("BootstrapPagination"))

VS - Paginated的更多相关文章

  1. MyBatis(3.2.3) - Paginated ResultSets using RowBounds

    Sometimes, we may need to work with huge volumes of data, such as with tables with millions of recor ...

  2. 【神器】vimum在浏览器中键盘操作选择、复制、粘贴,键盘党的最爱

    1.下载: http://files.cnblogs.com/files/quejuwen/vimum_extension_1_56.zip 2.开源:https://github.com/philc ...

  3. 据说年薪30万的Android程序员必须知道的帖子

    Android中国开发精英 目前包括: Android开源项目第一篇--个性化控件(View)篇       包括ListView.ActionBar.Menu.ViewPager.Gallery.G ...

  4. ecstore-app接口

    接口调用方式: 接口完整地址为:http://域名/index.php/wapapp/请求地址 比如获取商品信息就是 http://域名/index.php/wapapp/product.html 提 ...

  5. Android开源项目分类汇总

    目前包括: Android开源项目第一篇——个性化控件(View)篇   包括ListView.ActionBar.Menu.ViewPager.Gallery.GridView.ImageView. ...

  6. android 很多牛叉布局github地址(转)

    原文地址 http://blog.csdn.net/luo15309823081/article/details/41449929 点击可到达github-------https://github.c ...

  7. zendframework 2 链接数据库

    相对于zf1,来说,zf2让我们对于数据库这方面的操作我的个人感觉是对于字段起别名简单了,但是对数据库的操作虽然配置写好的就基本不需要动了,但是还是比1的配置要繁琐, 还是那句话,大家可以去看看源码. ...

  8. Yii的学习(5)--Active Record的关联

    官网原文:http://www.yiiframework.com/doc/guide/1.1/zh_cn/database.arr 官网中后半段为英文,而且中文的内容比英文少一些,先放到这里,之后有时 ...

  9. vimium Keyboard Bindings

    Modifier keys are specified as `<c-x>`, `<m-x>`, and `<a-x>` for ctrl+x, meta+x, a ...

随机推荐

  1. PAT(B) 1070 结绳(Java)

    题目链接:1070 结绳 (25 point(s)) 题目描述 给定一段一段的绳子,你需要把它们串成一条绳.每次串连的时候,是把两段绳子对折,再如下图所示套接在一起.这样得到的绳子又被当成是另一段绳子 ...

  2. 第13章 Salesforce Lightning应用程序

    13.1 Lightning应用程序 13.1.1 什么是闪电应用程序 Salesforce应用程序有两种风格:经典应用程序和闪电应用程序.经典应用程序在Salesforce Classic中创建和管 ...

  3. quartz2.3.0系列目录——带您由浅入深全面掌握quartz2.3.0

    quartz2.3.0系列目录 官网下载地址:http://www.quartz-scheduler.org/downloads/ 本系列demo全部来源于官网,仅仅是简化和汉化了注释!一部分代码de ...

  4. [LOJ2002] [SDOI2017] 序列计数

    题目链接 LOJ:https://loj.ac/problem/2002 洛谷:https://www.luogu.org/problemnew/show/P3702 Solution 考虑补集转换, ...

  5. Hadoop 系列(五)—— Hadoop 集群环境搭建

    一.集群规划 这里搭建一个 3 节点的 Hadoop 集群,其中三台主机均部署 DataNode 和 NodeManager 服务,但只有 hadoop001 上部署 NameNode 和 Resou ...

  6. winform实现图片的滑动效果

    使用winform实现图片的滑动效果(类似网站首页图片滑动切换效果),结果实现了,但是效果其实不是很理想.也许有更好的方法.         Timer timerSlide = null; //当前 ...

  7. Tortoise SVN常见图标含义及图标无法正常解决方法!

    转自:https://blog.csdn.net/xh16319/article/details/10582455 绿色的勾:图标表示这是一个最新取出的工作副本,他的Subversion状态是norm ...

  8. Duplicate zip entry [com/umeng/analytics/a.class==analytics-5.5.3.jar:com/umeng/analytics/AnalyticsConfig.class

    项目中需要用到Umeng统计分析,按照官网上的步骤做混淆后,在签名时报下面的错误: Error:java.io.IOException:Can't read [/.gradle/caches/modu ...

  9. IDEA 显示Run Dashboard窗口的2种方式

    前言:在基于spring boot构建spring cloud微服务架构的时候,一般需要启动多个应用程序,在idea开发工具中,多个同时启动的应用可以在Run Dashboard运行仪表盘中得到更好的 ...

  10. kubernetes集群的认证、授权、准入控制

    一.kubernetes集群安全架构 用户使用kubectl.客户机或通过REST请求访问API.可以授权用户和Kubernetes服务帐户进行API访问.当一个请求到达API时,它会经历几个阶段,如 ...