ASP.NET MVC 学习笔记(4) 分页处理
来源:互联网 发布:勾选不了笔记本优化版 编辑:程序博客网 时间:2024/06/03 07:25
先上图:
001.png (大小:50.2 K 下载次数:0)
前台代码:
002.png (大小:6.3 K 下载次数:0)
控制器代码:
003.png (大小:5.2 K 下载次数:0)
实现说明:
自定义一个扩展方法完成分页功能。
分页信息类:
- public class PagerInfo
- {
- public int RecordCount { get; set; }
- public int CurrentPageIndex { get; set; }
- public int PageSize { get; set; }
- }
用于保存当前页码,页大小,数据行数信息
分页查询信息,用于保存数据和分页信息
- public class PagerQuery<TEntity>
- {
- public PagerQuery(PagerInfo pager, TEntity list)
- {
- Pager = pager;
- EntityList = list;
- }
- public PagerInfo Pager { get; set; }
- public TEntity EntityList { get; set; }
- }
核心就是分页扩展方法:
- public static string Pager(this HtmlHelper hh, string id, PagerInfo pageInfo)
- {
- return Pager(hh, id, pageInfo.CurrentPageIndex, pageInfo.PageSize, pageInfo.RecordCount, null, null);
- }
- public static string Pager(this HtmlHelper hh, string id, int currentPageIndex,
- int pageSize, int recordCount, object htmlAttributes, string className)
- {
- TagBuilder builder = new TagBuilder("div");
- builder.IdAttributeDotReplacement = "_";
- builder.GenerateId(id);
- if(!string.IsNullOrEmpty(className))
- builder.AddCssClass(className);
- if(htmlAttributes!=null)
- builder.MergeAttributes(new RouteValueDictionary(htmlAttributes));
- builder.InnerHtml = GetNumericPage(currentPageIndex, pageSize, recordCount);
- return builder.ToString();
- }
- private static string GetNumericPage(int currentPageIndex, int pageSize, int recordCount)
- {
- int pageCount = (recordCount % pageSize == 0) ? recordCount / pageSize : recordCount / pageSize + 1;
- StringBuilder url = new StringBuilder();
- url.Append(HttpContext.Current.Request.Url.AbsolutePath + "?page={0}");
- foreach (string key in HttpContext.Current.Request.QueryString.AllKeys)
- {
- if (key.ToLower() != "page")
- url.AppendFormat("&{0}={1}", key,
- HttpContext.Current.Request[key]);
- }
- StringBuilder sb = new StringBuilder();
- sb.Append("");
- sb.AppendFormat("<span>共{0}条记录,共{1}页,当前第{2}页 </span>", recordCount, pageCount, currentPageIndex+1);
- if (currentPageIndex == 0)
- sb.Append("<span>首页 </span>");
- else
- {
- string url1 = string.Format(url.ToString(), 0);
- sb.AppendFormat("<span><a href={0}>首页</a></span> ", url1);
- }
- if (currentPageIndex > 1)
- {
- string url1 = string.Format(url.ToString(), currentPageIndex - 1);
- sb.AppendFormat("<span><a href={0}>上一页</a> </span>", url1);
- }
- else
- {
- sb.Append("<span>上一页 </span>");
- }
- sb.Append(GetNumericPage(currentPageIndex, pageSize, recordCount, pageCount, url.ToString()));
- if (currentPageIndex < pageCount-1)
- {
- string url1 = string.Format(url.ToString(), currentPageIndex + 1);
- sb.AppendFormat("<span><a href={0}>下一页</a> </span>", url1);
- }
- else
- {
- sb.Append("<span>下一页 </span>");
- }
- if (currentPageIndex == pageCount-1)
- sb.Append("<span>末页 </span>");
- else
- {
- string url1 = string.Format(url.ToString(), pageCount-1);
- sb.AppendFormat("<span><a href={0}>末页</a> </span>",url1);
- }
- return sb.ToString();
- }
- private static string GetNumericPage(int currentPageIndex, int pageSize, int recordCount, int pageCount, string url)
- {
- int k = currentPageIndex-5;
- int m = currentPageIndex+5;
- StringBuilder sb = new StringBuilder();
- if (k < 0) k = 0;
- if (m > pageCount - 1) m = pageCount - 1;
- for (int i = k ; i <= m; i++)
- {
- if (i == currentPageIndex)
- sb.AppendFormat("<span>{0} </span>", i+1);
- else
- {
- string url1 = string.Format(url, i);
- sb.AppendFormat("<span><a href={0}>{1}</a> </span>", url1,i+1);
- }
- }
- return sb.ToString();
- }
这部分代码可以根据自己的需要进行修改!
- ASP.NET MVC 学习笔记(4) 分页处理
- ASP.NET MVC 4 分页
- Asp.net MVC 学习笔记
- ASP.NET MVC学习笔记
- asp.net MVC学习笔记
- ASP.NET MVC 学习笔记
- ASP.NET MVC学习笔记
- ASP.NET MVC学习笔记
- ASP.net mvc学习笔记
- Asp.net MVC 学习笔记
- asp.net mvc 分页
- ASP.NET MVC分页
- asp.net MVC分页
- ASP.NET MVC分页
- ASP.NET MVC 1.0学习笔记
- asp.net mvc 2.0学习笔记
- Asp.net MVC学习笔记1
- ASP.NET MVC学习笔记3
- 如何实现继承
- 2010.07.22
- Java
- 奋斗
- 强大的是更强大的战斗力
- ASP.NET MVC 学习笔记(4) 分页处理
- 微软专家当评审——我们的项目汇报小结
- js操作时间(年-月-日 时-分-秒 星期几)
- 由JSP+JavaBean+DAO+Servlet 想到了VC++
- CSS的filter常用滤波器属性及语句大全
- css之FILTER:progid:DXImageTransform.Microsoft.Gradient使用
- display:inline-block的深入理解
- Firefox常用插件
- 实用的js 焦点图切换效果 结构行为相分离