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"))

最新文章

  1. eclipse自动补全的设置
  2. python 安装操作 MySQL 数据库.
  3. spark yarn-cluster 和 yarn-client提交的配置
  4. 【Xamarin挖墙脚系列:典型的业务程序的结构搭建】
  5. Ubuntu 中使用 谷歌日历
  6. 【SSH 基础】浅谈Hibernate关系映射(4)
  7. Canvas基础讲义
  8. A start job is running for xxx to stop
  9. 聊聊Docker数据卷和数据卷容器
  10. zombodb sql functions 说明
  11. 【Django】ORM操作MySQL数据库遇到的一些问题
  12. gulpfile.js不断更新中...
  13. shell 脚本 测试webApp
  14. c# 输入姓名直到输入的是quit时,停止输入然后显示出输入的姓名个数及姓名
  15. 【flask macro】No caller defined
  16. Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x7f070058 android-studio 3.0 from canary 5 to canary 6
  17. 黑马程序员:多线程Socket
  18. js 有小数点数据求和多出小数点问题记录
  19. BZOJ2588 SPOJ10628 Count on a tree 【主席树】
  20. RabbitMq ack 与 nack

热门文章

  1. leetcode无重复字符的最长子串
  2. GC收集器
  3. Junit5中实现参数化测试
  4. ubuntu 迅雷 XwareDesktop
  5. sql 分组后重复数据取时间最新的一条记录
  6. JAVASCRIPT中装饰器是什么(装修)
  7. UI5-技术篇-Hybrid App-3-jsbin百度地图
  8. AI人脸识别SDK接入 — 参数优化篇(虹软)
  9. 服务网关ZuulFilter过滤器--如何解决跨域请求中的OPTIONS请求
  10. XnViewer管理浏览照片、图片