Fork me on GitHub

MVC分页

  1 using System.Text;
  2 
  3 namespace CommonFuns
  4 {
  5     public class Paging
  6     {
  7         public static string IndexHtml(int recordCount, int pageCount, int pageIndex, string keyStr, int pageSize)
  8         {
  9             return IndexHtml(recordCount, pageCount, pageIndex, keyStr, pageSize, false);
 10         }
 11 
 12         public static string IndexHtml(int recordCount, int pageCount, int pageIndex, string keyStr, int pageSize, bool isInput)
 13         {
 14             return IndexHtml(recordCount, pageCount, pageIndex, keyStr, pageSize, isInput, string.Empty);
 15         }
 16 
 17         /// <summary>
 18         /// 分页方法
 19         /// </summary>
 20         /// <param name="recordCount">总记录数</param>
 21         /// <param name="pageCount">总页数</param>
 22         /// <param name="pageIndex">当前页</param>
 23         /// <param name="keyStr">查询关键字</param>
 24         /// <param name="pageSize">页内记录数目</param>
 25         /// <param name="isInput">是否跳页</param>
 26         /// <param name="pagePath">页链接</param>
 27         /// <returns></returns>
 28         public static string IndexHtml(int recordCount, int pageCount, int pageIndex, string keyStr, int pageSize, bool isInput, string pagePath)
 29         {
 30             if (!string.IsNullOrEmpty(keyStr))
 31             {
 32                 if (!keyStr.StartsWith("&"))
 33                 {
 34                     keyStr = "&" + keyStr;
 35                 }
 36             }
 37             StringBuilder sb = new StringBuilder();
 38             sb.Append("<div class='pageIndex'><ul><li>");
 39             sb.Append($"<span class='d0'>总计:{recordCount} 条 ,每页显示{pageIndex}条,第 {pageSize} 页</span>");
 40 
 41             #region 首页 上一页
 42 
 43             if (pageIndex == 1)
 44             {
 45                 sb.Append("<span class='d' style='color:#bfbfbf'>首页</span>");
 46                 sb.Append("<span  class='d2' style='color:#bfbfbf'>上一页</span>");
 47             }
 48             else
 49             {
 50                 sb.Append($"<span class='d'><a href='{pagePath}?page=1{keyStr}'>首页</a></span>");
 51                 sb.Append($"<span  class='d2'><a href='{pagePath}?page={pageIndex - 1}{keyStr}'>上一页</a></span>");
 52             }
 53 
 54             #endregion
 55 
 56             #region 数字导航
 57 
 58             int startId = 1, endId = 1;
 59             startId = pageIndex - 3;
 60             endId = pageIndex + 4;
 61             startId = startId < 1 ? 1 : startId;
 62             endId = endId > pageCount ? pageCount : endId;
 63 
 64             for (int i = startId; i <= endId; i++)
 65             {
 66                 if (i == pageIndex)
 67                 {
 68                     sb.Append($"<span class='d3'><a href='{pagePath}?page={i}{keyStr}'>{i}</a></span>");
 69                 }
 70                 else
 71                 {
 72                     sb.Append($"<span class='d4'><a href='{pagePath}?page={i}{keyStr}'>{i}</a></span>");
 73                 }
 74             }
 75 
 76             #endregion
 77 
 78             #region 下一页 尾页
 79 
 80             if (pageIndex == pageCount || pageCount == 0)
 81             {
 82                 sb.Append("<span class='d2' style='color:#bfbfbf'>下一页</span>");
 83                 sb.Append("<span class='d' style='color:#bfbfbf'>尾页</span>");
 84             }
 85             else
 86             {
 87                 sb.Append($"<span class='d2'><a href='{pagePath}?page={pageIndex + 1}{keyStr}'>下一页</a></span>");
 88                 sb.Append($"<span class='d'><a href='{pagePath}?page={pageCount}{keyStr}'>尾页</a></span>");
 89             }
 90 
 91             #endregion
 92 
 93             #region 跳到某一页
 94 
 95             if (isInput)
 96             {
 97                 sb.Append($"<input id='cptext' type='text' value='{pageIndex}'  />&nbsp;<input id='btnGo' url='{keyStr}' value='Go' type='button'/>");
 98             }
 99 
100             #endregion
101 
102             sb.Append("</li></ul>");
103             sb.Append("</div>");
104 
105             return sb.ToString();
106         }
107     }
108 }

Controller页面

 1 public ActionResult Index(int? page, string key)
 2 {
 3     BreakPage pageQuery = new BreakPage();
 4     pageQuery.PageIndex = page ?? 1;
 5     pageQuery.PageSize = 5;
 6     string urlParameters = string.Empty;
 7     if (!string.IsNullOrEmpty(key))
 8     {
 9         urlParameters += string.Format("&key={0}", Url.Encode(key));
10 
11     }
12     ViewBag.PageIndexHtml = Paging.IndexHtml(pageQuery.TotalItems, pageQuery.TotalPages, pageQuery.PageIndex, urlParameters, pageQuery.PageSize);
13     return View();
14 }

BreakPage类

  1 using System;
  2 using System.Collections.Generic;
  3 using System.Linq;
  4 using System.Text;
  5 
  6 namespace CommonFuns
  7 {
  8     /// <summary>
  9     /// 分页信息
 10     /// </summary>
 11     public class BreakPage
 12     {
 13 
 14         /// <summary>
 15         /// 默认PageSize=10
 16         /// </summary>
 17         public BreakPage()
 18         {
 19             this.mPageIndex = 1;
 20             this.mPageSize = 10;
 21         }
 22         /// <summary>
 23         /// 
 24         /// </summary>
 25         /// <param name="pageSize"></param>
 26         public BreakPage(int pageSize)
 27         {
 28             this.mPageSize = pageSize;
 29         }
 30 
 31         /// <summary>
 32         /// 分页构造函数【两个参数版】
 33         /// </summary>
 34         /// <param name="PageIndex">页码</param>
 35         /// <param name="PageSize">页面大小</param>
 36         public BreakPage( int PageIndex, int PageSize )
 37         {
 38             this.mPageIndex = PageIndex;
 39             this.mPageSize = PageSize;
 40         }
 41 
 42 
 43 
 44         private int mPageIndex;
 45         /// <summary>
 46         /// 当前页码
 47         /// </summary>
 48         public int PageIndex
 49         {
 50             set { mPageIndex = value; }
 51             get
 52             {
 53                 return mPageIndex < 1 ? 1 : mPageIndex;
 54             }
 55         }
 56 
 57         private int mPageSize;
 58         /// <summary>
 59         /// 每页大小
 60         /// </summary>
 61         public int PageSize
 62         {
 63             set { mPageSize = value; }
 64             get
 65             {
 66                 return mPageSize < 1 ? 10 : mPageSize;
 67             }
 68         }
 69 
 70         private int mTotalItems;
 71         /// <summary>
 72         /// 符合条件总记录条数
 73         /// </summary>
 74         public int TotalItems
 75         {
 76             get { return mTotalItems; }
 77             set
 78             {
 79                 mTotalItems = value;
 80             }
 81         }
 82 
 83         private string mFilter;
 84         /// <summary>
 85         /// 筛选条件
 86         /// </summary>
 87         public string Filter
 88         {
 89             get { return mFilter; }
 90             set { mFilter = value; }
 91         }
 92 
 93         /// <summary>
 94         /// 符合条件总页数
 95         /// </summary>
 96         public int TotalPages
 97         {
 98             get
 99             {
100                 return (int)(mPageSize == 0 ? 0 : Math.Ceiling(TotalItems / (double)mPageSize));
101             }
102         }
103 
104         private bool mIsAsc;
105         /// <summary>
106         /// 是否升序
107         /// </summary>
108         public bool IsAsc
109         {
110             get
111             {
112                 return mIsAsc;
113             }
114             set
115             {
116                 mIsAsc = value;
117             }
118         }
119 
120         private string mOrderExpression;
121         /// <summary>
122         /// 排序表达式
123         /// </summary>
124         public string OrderExpression
125         {
126             get
127             {
128                 return mOrderExpression;
129             }
130             set
131             {
132                 mOrderExpression = value;
133             }
134         }
135 
136     }
137 }

cshtml页面调用

1 @Html.Raw(ViewBag.PageIndexHtml)

 

posted @ 2017-04-26 16:40  雪山玉龙  阅读(223)  评论(0编辑  收藏  举报