1、绑定分页数据

  Request:主要是获取当前查询中所参与的所有条件

  pageSize:分页显示数量

  totalCount:分页总数

  currentPageStr:自定义参数(后面会更新该参数的用法和途径)

  tab:自定义参数(后面会更新该参数的用法和途径,和上面currentPageStr配合使用,需优化)

  pageIndexNumber:页面上显示当前页前、后多少页数数的数字

      如:显示当前页前后个5页的数字

  IsShouCount:是否显示总数量

2、用法,Response.Write页面输出一段html

  1. <div class="m-t-20 paging">
  2. <pre>
  3. <%Response.Write(ZCJExtensions.Pager(Request, 40, iCount, "pi",IsShouCount:true));%>
  4. </pre>
  5. </div>

 

 

3、源代码 方法主要用到请求头类的使用,HttpRequest 

  1. public static class ZCJExtensions
  2. {
  3. /// <summary>
  4. /// 分页Pager显示(分页请求字符串默认为pi)
  5. /// </summary>
  6. /// <param name="pageSize">每页记录的数量</param>
  7. /// <param name="totalCount">总记录数</param>
  8. /// <param name="pageIndexNumber">显示页索引的数量</param>
  9. /// <returns></returns>
  10. public static string Pager(int pageSize, int totalCount,int pageIndexNumber = 10)
  11. {
  12. return ZCJExtensions.Pager(HttpContext.Current.Request, pageSize, totalCount, "pi", "", pageIndexNumber);
  13. }
  14. /// <summary>
  15. /// 分页Pager显示
  16. /// </summary>
  17. /// <param name="requ">请求</param>
  18. /// <param name="pageSize">每页记录的数量</param>
  19. /// <param name="totalCount">总记录数</param>
  20. /// <param name="currentPageStr">请求字符串</param>
  21. /// <param name="tab">切换ID</param>
  22. /// <param name="pageIndexNumber">显示页索引的数量</param>
  23. /// <returns></returns>
  24. public static string Pager(HttpRequest requ, int pageSize, int totalCount, string currentPageStr = "1",string tab="",int pageIndexNumber = 10,bool IsShouCount=false)
  25. {
  26. //var queryString = html.ViewContext.HttpContext.Request.QueryString;
  27. string html = "";
  28. var queryString = requ.QueryString;
  29. int currentPage = 1; //当前页
  30. var totalPages = Math.Max((totalCount + pageSize - 1) / pageSize, 1); //总页数
  31. //var dict = new System.Web.Routing.RouteValueDictionary(html.ViewContext.RouteData.Values);
  32. var dict = new System.Web.Routing.RouteValueDictionary(requ.Form);
  33. var output = new System.Text.StringBuilder();
  34. var url = requ.Url.AbsolutePath + "?" + currentPageStr + "=(*)";
  35. if (tab.Length > 0)
  36. {
  37. url += "&tab=" + tab;
  38. }
  39. //与相应的QueryString绑定
  40. foreach (string key in queryString.Keys)
  41. {
  42. if (!string.IsNullOrEmpty(key) && queryString[key] != null )
  43. {
  44. dict[key] = queryString[key];
  45. if (key != currentPageStr && key.ToLower()!="tab")
  46. {
  47. url += "&" + key + "=" + queryString[key];
  48. }
  49. }
  50. }
  51. //获取 ~/Page/{page number} 的页号参数
  52. int.TryParse((dict[currentPageStr] != null) ? dict[currentPageStr].ToString() : "0", out currentPage);
  53. if (currentPage <= 0) currentPage = 1;
  54. if (totalPages > 1)
  55. {
  56. if (currentPage != 1)
  57. {
  58. dict[currentPageStr] = 1;
  59. //output.AppendFormat("{0} ", html.RouteLink("<<", dict));
  60. var pageunm = "1";
  61. var tempurl = url.Replace("(*)", pageunm);
  62. output.AppendFormat("{0}", "<a href=\'" + tempurl + "\'>首页</a>");
  63. }
  64. if (currentPage > 1)
  65. {
  66. //处理上一页的连接
  67. dict[currentPageStr] = currentPage - 1;
  68. var pageunm = (currentPage - 1).ToString();
  69. var tempurl = url.Replace("(*)", pageunm);
  70. //output.Append(html.RouteLink("<", dict));
  71. output.Append("<a href=\'" + tempurl + "\'>上一页</a>");
  72. }
  73. else
  74. {
  75. //output.Append("<span><</span>");
  76. }
  77. output.Append("");
  78. int currint = pageIndexNumber / 2;
  79. for (int i = 0; i <= pageIndexNumber; i++)
  80. {
  81. //一共最多显示10个页码,前面5个,后面5个
  82. if ((currentPage + i - currint) >= 1 && (currentPage + i - currint) <= totalPages)
  83. if (currint == i)
  84. {
  85. //当前页处理
  86. output.Append(string.Format("<span>{0}</span>", currentPage));
  87. }
  88. else
  89. {
  90. //一般页处理
  91. dict[currentPageStr] = currentPage + i - currint;
  92. var pageunm = (currentPage + i - currint).ToString();
  93. var tempurl = url.Replace("(*)", pageunm);
  94. //output.Append(html.RouteLink((currentPage + i - currint).ToString(), dict));
  95. output.Append("<a href=\'" + tempurl + "\'>" + pageunm + "</a>");
  96. }
  97. output.Append("");
  98. }
  99. if (currentPage < totalPages)
  100. {
  101. //处理下一页的链接
  102. dict[currentPageStr] = currentPage + 1;
  103. var pageunm = (currentPage + 1).ToString();
  104. //output.Append(html.RouteLink(">", dict));
  105. var tempurl = url.Replace("(*)", pageunm);
  106. output.Append("<a href=\'" + tempurl + "\'>下一页</a>");
  107. }
  108. else
  109. {
  110. //output.Append(">");
  111. }
  112. output.Append("");
  113. if (currentPage != totalPages)
  114. {
  115. dict[currentPageStr] = totalPages;
  116. var pageunm = totalPages.ToString();
  117. var tempurl = url.Replace("(*)", pageunm);
  118. //output.Append(html.RouteLink(">>", dict));
  119. output.Append("<a href=\'" + tempurl + "\'>尾页</a>");
  120. }
  121. output.Append(" ");
  122. }
  123. output.AppendFormat("第{0}页/共{1}页", currentPage, totalPages);//这个统计加不加都行
  124. if (IsShouCount == true)
  125. {
  126. output.AppendFormat(",共{0}条记录", totalCount);
  127. }
  128. //HtmlString
  129. return output.ToString();
  130. }
  131. }

 

版权声明:本文为nimeide原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/nimeide/p/4929380.html