你的位置:首页 > 软件开发 > ASP.net > Asp.net mvc项目分页功能

Asp.net mvc项目分页功能

发布时间:2015-08-21 12:00:21
1.定义一个分页用的Page<T>类 1 /* 使用示例: 2 var pager = new Pager<Article>( 3 this.ControllerContext, //上下文 4 type.Articl ...

Asp.net mvc项目分页功能

1.定义一个分页用的Page<T>类

 1 /* 使用示例: 2    var pager = new Pager<Article>( 3         this.ControllerContext, //上下文 4         type.Articles,//数据源 5         10//,每页大小 6         //"page" url中分页参数名称,默认为page 7         ); 8    * */ 9   /// <summary> 10   /// 基于ControlerContext的分页辅助类 11   /// </summary> 12   /// <typeparam name="T"></typeparam> 13  14   public class Pager<T> 15   { 16     /// <summary> 17     /// 数据分页初始化函数 18     /// </summary> 19     /// <param name="context">控制器请求上下文</param> 20     /// <param name="source">数据源</param> 21     /// <param name="pageSize">每页条数</param> 22     /// <param name="currentPageurlParamName">Url中当前页参数名称</param> 23     public Pager( 24       ControllerContext context, 25       IEnumerable<T> source, 26       int pageSize = 10, 27       get='_blank'>string currentPageurlParamName = "page") 28     { 29  30       this.PageSize = pageSize; 31       this.CurrentPageUrlParamName = currentPageurlParamName; 32  33       this.TotalItmesCount = source.Count(); 34       var page = 1; 35       int.TryParse(context.HttpContext.Request.Params[CurrentPageUrlParamName], out page); 36       this.CurrentPage = page; 37  38       this.data = source.Skip((CurrentPage - 1) * PageSize) 39                .Take(PageSize); 40  41       this.PageNavProvider = new PagerNavProvider<T>(this); 42     } 43     /// <summary> 44     /// URL中 页码参数名称 45     /// </summary> 46     public string CurrentPageUrlParamName 47     { 48       get; 49       private set; 50     } 51     private int currentPage; 52     /// <summary> 53     /// 当前页码,从1开始 54     /// </summary> 55     public int CurrentPage 56     { 57       get { return currentPage; } 58       private set 59       { 60         if (value > TotalPage) 61           currentPage = TotalPage; 62         else if (value <= 0) 63           currentPage = 1; 64         else 65           currentPage = value; 66       } 67     } 68     /// <summary> 69     /// 用于分页的数据总数 70     /// </summary> 71     public int TotalItmesCount 72     { 73       get; 74       private set; 75     } 76     /// <summary> 77     /// 每页包含的数据总数,默认为10条 78     /// </summary> 79     public int PageSize 80     { 81       get; 82       private set; 83     } 84     /// <summary> 85     /// 最大页码,即总页数 86     /// </summary> 87     public int TotalPage 88     { 89       get 90       { 91         return (TotalItmesCount / PageSize) + (TotalItmesCount % PageSize > 0 ? 1 : 0); 92       } 93     } 94     /// <summary> 95     /// 是否有上一页 96     /// </summary> 97     public bool HasPrev 98     { 99       get100       {101         return CurrentPage > 1;102       }103     }104     /// <summary>105     /// 是否有下一页106     /// </summary>107     public bool HasNext108     {109       get110       {111         return CurrentPage < TotalPage;112       }113     }114     /// <summary>115     /// 上一页页码116     /// </summary>117     public int PrevPage118     {119       get120       {121         if (HasPrev)122           return CurrentPage - 1;123         else124           throw new Exception("已经是第一页了!");125       }126     }127     /// <summary>128     /// 下一页页码129     /// </summary>130     public int NextPage131     {132       get133       {134         if (HasNext)135           return CurrentPage + 1;136         else137           throw new Exception("已经是最后一页了!");138       }139     }140     private IEnumerable<T> data;141     /// <summary>142     /// 当前页包含的数据143     /// </summary>144     public IEnumerable<T> CurrentPageItems145     {146       get { return data; }147     }148 149     public PagerNavProvider<T> PageNavProvider { get; private set; }150   }151 152   public class PagerNavProvider<T>153   {154 155     public PagerNavProvider(Pager<T> pager, int dispalyPage = 10)156     {157       DisplayPage = dispalyPage;158       var cur = pager.CurrentPage;159       StartPageNum = cur - pager.PageSize / 2;160       EndPageNum = cur + pager.PageSize / 2;161       if (StartPageNum <= 0 || pager.TotalPage < DisplayPage)162         StartPageNum = 1;163       if (EndPageNum >= pager.TotalPage || pager.TotalPage < DisplayPage)164         EndPageNum = pager.TotalPage;165     }166     public int DisplayPage { get; private set; }167     public int StartPageNum { get; private set; }168     public int EndPageNum { get; private set; }169   }

原标题:Asp.net mvc项目分页功能

关键词:ASP.NET

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。