分页功能
来源:互联网 发布:勾选不了笔记本优化版 编辑:程序博客网 时间:2024/05/21 19:36
先上图:
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();
- }
这部分代码可以根据自己的需要进行修改!
- 分页功能
- 分页功能
- 分页功能
- 分页功能
- 分页功能
- 分页功能
- 分页功能
- 分页,数据库分页功能 SqlServer
- 实现分页打印功能:
- dispaytag的分页功能
- CakePhp分页功能
- 强化DataGrid分页功能
- 扩展GridView分页功能
- asp.net分页功能
- php 实现分页功能
- GridView的分页功能
- datalist分页功能
- GridView自定义分页功能
- display:inline-block的深入理解
- Firefox常用插件
- 实用的js 焦点图切换效果 结构行为相分离
- 图解JavaScript中的一些定位属性
- [javascript] 封装一个实用的焦点图切换效果【转】
- 分页功能
- TMF、NGOSS介绍
- 用电脑最忌讳的18个小动作
- 你不是菜鸟(5):对于程序员学历是不是问题?
- GDB的使用方法
- 5,6、位运算
- OPC
- 如何使用OPC 数据访问规范 (DA)
- GPP和DSP