修改MvcPager分页控件以适用Bootstrap 效果(含英文版,可下载)

软件开发分页效果必不可少,对于Asp.Net MVC 而言,MvcPager 是个不错的选择。请访问http://www.webdiyer.com/mvcpager/

由于自带的分页样式不能和项目整体风格兼容,所以我们准备改写源代码,使其能够使用Bootstrap 的分页样式。

先来查看两种分页的html代码

Bootstrap 样式:

1  <ul class="pagination">
2     <li class="disabled"><a href="#">«</a></li>
3     <li class="active"><a href="#">1 <span class="sr-only">(current)</span></a></li>
4     ...
5   </ul>

一个ul标签,li 下面有一个a 标签.

MvcPager 样式:

1 <!--MvcPager v2.0 for ASP.NET MVC 4.0+ © 2009-2013 Webdiyer (http://www.webdiyer.com)-->
2 <div data-maxpages="5" data-mvcpager="true" data-pageparameter="id" data-urlformat="/mvcpager/demo/basic/__id__/"><a disabled="disabled">首页</a>&nbsp;&nbsp;<a disabled="disabled">上一页</a>&nbsp;&nbsp;1&nbsp;&nbsp;<a href="/mvcpager/demo/basic/2/">2</a>&nbsp;&nbsp;<a href="/mvcpager/demo/basic/3/">3</a>&nbsp;&nbsp;<a href="/mvcpager/demo/basic/4/">4</a>&nbsp;&nbsp;<a href="/mvcpager/demo/basic/5/">5</a>&nbsp;&nbsp;<a href="/mvcpager/demo/basic/2/">下一页</a>&nbsp;&nbsp;<a href="/mvcpager/demo/basic/5/">尾页</a>&nbsp;&nbsp;<select data-pageindexbox="true" data-autosubmit="true"><option value="1" selected="selected">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option></select></div>
3 <!--MvcPager v2.0 for ASP.NET MVC 4.0+ © 2009-2013 Webdiyer (http://www.webdiyer.com)-->

这里就比较简单了,一个div 下只有a 标签.

那么问题来了,我们该怎么修改源码来达到Bootstrap 分页效果呢?

1、到官网下载MvcPager 源代码

2、开始研究html 生成规则.

这两步笔者已经帮你做了,下面跟我一起来做修改.

通过代码调试跟踪和查看源码注释,我们知道了最终的HTML 呈现是在PagerBuilder.cs 下的RenderPager() 方法.

 1  var sb = new StringBuilder();
 2             if (_ajaxPagingEnabled)
 3             {
 4                 foreach (PagerItem item in pagerItems)
 5                 {
 6                         //修改前
 7                   //sb.Append( GenerateAjaxPagerElement(item) );
 8                        //修改后
 9                     sb.Append("<li>" + GenerateAjaxPagerElement(item) + "</li>");
10                 }
11             }
12             else
13             {
14                 foreach (PagerItem item in pagerItems)
15                 {
16                       //修改前
17                      //sb.Append( GeneratePagerElement(item) );
18                       //修改后
19                     sb.Append("<li>" + GeneratePagerElement(item) + "</li>");
20                 }
21             }

修改以上代码以获得li标签。由于ul标签是最后加上去的所以我们在这里修改:

 1    if (_pagerOptions.ShowPageIndexBox)
 2             {
 3                 if (!_ajaxPagingEnabled)
 4                 {
 5                     var attrs = new Dictionary<string, object>();
 6                     AddDataAttributes(attrs);
 7                     tb.MergeAttributes(attrs, true);
 8                 }
 9                 sb.Append(BuildGoToPageSection());
10             }
11             else
12                 sb.Length -= _pagerOptions.PagerItemsSeperator.Length;
13              //修改前
14              //  tb.InnerHtml = sb.ToString() ;
15              //修改后,为ul加上class=‘pagination‘以获得boostrap 分页样式
16             tb.InnerHtml = "<ul class=‘pagination‘>" + sb.ToString() + "</ul>";

有了以上还不行,还需要为当前页增加样式,

修改后的GenerateAjaxAnchor(PagerItem item) 方法为:

 1   }
 2         private string GenerateAjaxAnchor(PagerItem item)
 3         {
 4             string url = GenerateUrl(item.PageIndex);
 5             if (string.IsNullOrWhiteSpace(url))
 6                   //这里直接假的行内样式,可以使用class替换掉
 7                 return "<a  style=‘z-index:2;color:#fff; cursor: default;background-color: #428bca;  border-color: #428bca;‘ disabled=‘disabled‘>" + item.Text + "</a>";
 8             //return HttpUtility.HtmlEncode(item.Text);
 9             var tag = new TagBuilder("a") { InnerHtml = item.Text };
10             tag.MergeAttribute("href", url);
11             tag.MergeAttribute("data-pageindex", item.PageIndex.ToString(CultureInfo.InvariantCulture));
12             //修改后,添加了li标签
13             return "<li>" + tag.ToString(TagRenderMode.Normal) + "</li>";
14         }

对源代码的修改就是这么多了,我们一起看看效果.

中文版效果:

英文版效果(同样是修改源码,增加了对英文的支持):

代码点击这里下载

时间: 2024-12-17 02:46:33

修改MvcPager分页控件以适用Bootstrap 效果(含英文版,可下载)的相关文章

MvcPager分页控件使用注意事项!

初学MVC,做了个单页面应用,需要显示多个分页,并无刷新更新. 找到了MvcPager控件,非常好用,在使用ajax过程中遇到很多问题.慢慢调试和杨老师(MvcPaegr作者)请教,总于都解决了. 首先NuGet包添加上.搜索MvcPager可以找到. 控制器端必须引用 using Webdiyer.WebControls.Mvc; 后端就不多记录了,看下官方Demo差不多都理解了,主要记录下前端. <div> @Ajax.Pager(Model, new PagerOptions { Sho

基于Bootstrap仿淘宝分页控件实现

.header { cursor: pointer } p { margin: 3px 6px } th { background: lightblue; width: 20% } table { text-align: center; margin-top: 20px; margin-left: 10px; margin-bottom: 20px } a { cursor: pointer; text-decoration: none; color: gray } a:hover { text

MvcPager 免费开源分页控件3.0版发布!

MvcPager 3.0版在原2.0版的基础上进行了较大的升级,对MvcPager脚本插件重写并进行了大量优化.修复了部分bug并新增了客户端Javascript API等功能,使用更方便,功能更强大... MvcPager 3.0 更新说明: 修正了路由定义中对页索引参数使用约束而导致无法为页索引文本或下拉框生成跳链接的bug:修正了Ajax分页模式下,如果首次加载时数据只有一页且未设置AutoHide=false,则控件不呈现任何有效html标签,导致MvcPager初始化失败以及后续Aja

基于avalon+jquery做的bootstrap分页控件

刚开始学习avalon,项目需要就尝试写了个分页控件Pager.js:基于BootStrap样式这个大家都很熟悉 在这里推荐下国产前端神器avalon:确实好用,帮我解决了很多前端问题. 不多说了,代码贴上: 1 /** 2 * options.id avalon 所需要的$id 3 * options.total 总记录数 4 * options.rows 行数 5 * options.callback 6 */ 7 var Pager=function(options){ 8 var _th

在DevExpress程序中使用Winform分页控件直接录入数据并保存

一般情况下,我们都倾向于使用一个组织比较好的独立界面来录入或者展示相关的数据,这样处理比较规范,也方便显示比较复杂的数据.不过在一些情况下,我们也可能需要直接在GridView表格上直接录入或者修改数据,这种对于字段比较少,而且内容相对比较简单的情况下,效率是比较高的一种输入方式.本篇随笔主要介绍在DevExpress程序中使用GridView直接录入数据并保存的实现,以及使用Winform分页控件来进行数据直接录入的实现操作. 1.在GridView上展示数据 在GridView上展示数据,只

.net core 学习笔记(1)-分页控件的使用

最近有个小项目,用.net core开发练练手,碰到的第一个问题就是分页控件的问题,自己写太费时间,上网查了下,发现有人已经封装好了的,就拿过来用了,分页控件github:https://github.com/sgjsakura/AspNetCore/blob/master/PagerDemo.md 使用方法也很简单 后台代码如下:期中list是数据返回的数据,pagesize是每页的数量,page是当前页数,totalcount-总条数,pagenum-总页数 var model= new P

【干货分享】JPager.Net MVC超好用轻量级分页控件

JPager.Net  MVC好用的轻量级分页控件,好用到你无法想象,轻量到你无法想象. JPager.Net  MVC好用的轻量级分页控件,实现非常简单,使用也非常简单. JPager.Net  MVC好用的轻量级分页控件,代码精心推敲,经多人反复建议修改,最终成型使用中.非常好用分享给大家.源代码一共放出来.先上个效果图: JPager.Net  MVC好用的轻量级分页控件JPager.Net .dll核心代码 PagerInBase.cs namespace JPager.Net { //

分页控件AspNetPager学习笔记

1.AspNetPager简介 AspNetPager是一款开源.简单易用.可定制化等等各种优点的Web分页控件. 2.使用方法 1)下载AspNetPager.dll文件(http://www.webdiyer.com/aspnetpager/downloads/) 2)添加对该文件的引用 3)工具栏右键-选择项,把该dll控件添加进工具栏 4)把该控件拖进设计界面,设置控件的各种属性如下: <webdiyer:AspNetPager ID="AspNetPager1" run

asp.net 分页-自己写分页控件

去年就发表过asp.net 分页-利用后台直接生成html分页 ,那种方法只是单纯的实现了分页,基本不能使用,那时就想写个自己的分页控件,无奈能力有限.最近有点时间了,就自己做出了这个分页控件.我承认,这个控件参考了别人的,但是其实里面的原理都相同,差异只是展现方式而已. 去年就在做一个自己的后台系统,刚开始用的asp.net,做了一部分就没有做了,因为缺少权限控制类别.后面转为用asp.net mvc4做,也只是做了一部分,觉得不太方便,也许是我不太会用.再用ajax+ashx做了一部分,虽然