MvcPager分页控件 适用于Bootstrap


Posted in Javascript onJune 03, 2017

软件开发分页效果必不可少,对于Asp.Net MVC 而言,MvcPager 是个不错的选择。

请访问http://www.webdiyer.com/mvcpager/

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

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

Bootstrap 样式:

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

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

MvcPager 样式:

<!--MvcPager v2.0 for ASP.NET MVC 4.0+ © 2009-2013 Webdiyer (http://www.webdiyer.com)-->
<div data-maxpages="5" data-mvcpager="true" data-pageparameter="id" data-urlformat="/mvcpager/demo/basic/__id__/"><a disabled="disabled">首页</a>  <a disabled="disabled">上一页</a>  1  <a href="/mvcpager/demo/basic/2/">2</a>  <a href="/mvcpager/demo/basic/3/">3</a>  <a href="/mvcpager/demo/basic/4/">4</a>  <a href="/mvcpager/demo/basic/5/">5</a>  <a href="/mvcpager/demo/basic/2/">下一页</a>  <a href="/mvcpager/demo/basic/5/">尾页</a>  <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>
<!--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() 方法.

var sb = new StringBuilder();
  if (_ajaxPagingEnabled)
  {
  foreach (PagerItem item in pagerItems)
  {
   //修改前
   //sb.Append( GenerateAjaxPagerElement(item) );
   //修改后
   sb.Append("<li>" + GenerateAjaxPagerElement(item) + "</li>");
  }
  }
  else
  {
  foreach (PagerItem item in pagerItems)
  {
   //修改前
   //sb.Append( GeneratePagerElement(item) );
   //修改后
   sb.Append("<li>" + GeneratePagerElement(item) + "</li>");
  }
  }

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

if (_pagerOptions.ShowPageIndexBox)
  {
  if (!_ajaxPagingEnabled)
  {
   var attrs = new Dictionary<string, object>();
   AddDataAttributes(attrs);
   tb.MergeAttributes(attrs, true);
  }
  sb.Append(BuildGoToPageSection());
  }
  else
  sb.Length -= _pagerOptions.PagerItemsSeperator.Length;
  //修改前
  // tb.InnerHtml = sb.ToString() ;
  //修改后,为ul加上class='pagination'以获得boostrap 分页样式
  tb.InnerHtml = "<ul class='pagination'>" + sb.ToString() + "</ul>";

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

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

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

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

  中文版效果:

MvcPager分页控件 适用于Bootstrap

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

MvcPager分页控件 适用于Bootstrap

源码下载:MvcPager分页控件

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
在JavaScript中正确引用bind方法的应用
May 11 Javascript
浅谈angularJS 作用域
Jul 05 Javascript
详细解读JavaScript编程中的Promise使用
Jul 27 Javascript
使用JavaScript为Kindeditor自定义按钮增加Audio标签
Mar 18 Javascript
Vue数据驱动模拟实现4
Jan 12 Javascript
详解React开发中使用require.ensure()按需加载ES6组件
May 12 Javascript
vue使用ajax获取后台数据进行显示的示例
Aug 09 Javascript
详解几十行代码实现一个vue的状态管理
Jan 28 Javascript
通过seajs实现JavaScript的模块开发及按模块加载
Jun 06 Javascript
js实现类似iphone的网页滑屏解锁功能示例【附源码下载】
Jun 10 Javascript
javascript数组常见操作方法实例总结【连接、添加、删除、去重、排序等】
Jun 13 Javascript
js实现三角形粒子运动
Sep 22 Javascript
全面解析Node.js 8 重要功能和修复
Jun 02 #Javascript
vue 中自定义指令改变data中的值
Jun 02 #Javascript
Jquery EasyUI $.Parser
Jun 02 #jQuery
BootStrap 动态表单效果
Jun 02 #Javascript
socket.io与pm2(cluster)集群搭配的解决方案
Jun 02 #Javascript
angularjs定时任务的设置与清除示例
Jun 02 #Javascript
Node.js v8.0.0正式发布!看看带来了哪些主要新特性
Jun 02 #Javascript
You might like
基于PHP文件操作的详细诠释
2013/06/21 PHP
深入解析PHP中的(伪)多线程与多进程
2013/07/01 PHP
php json_encode值中大括号与花括号区别
2013/09/30 PHP
javascript window.opener的用法分析
2010/04/07 Javascript
js中eval()函数和trim()去掉字符串左右空格应用
2013/02/02 Javascript
变量声明时命名与变量作为对象属性时命名的区别解析
2013/12/06 Javascript
解决angular的post请求后SpringMVC后台接收不到参数值问题的方法
2015/12/10 Javascript
jQuery实现二级下拉菜单效果
2016/01/05 Javascript
Javascript实现图片轮播效果(一)让图片跳动起来
2016/02/17 Javascript
详解AngularJS过滤器的使用
2016/03/11 Javascript
JS传递对象数组为参数给后端,后端获取的实例代码
2016/06/28 Javascript
基于JavaScript实现树形下拉框
2016/08/10 Javascript
jQuery leonaScroll 1.1 自定义滚动条插件(推荐)
2016/09/17 Javascript
jQuery滚动插件scrollable.js用法分析
2017/05/25 jQuery
百度地图去掉marker覆盖物或者去掉maker的label文字方法
2018/01/26 Javascript
基于vue1和vue2获取dom元素的方法
2018/03/17 Javascript
vue观察模式浅析
2018/09/25 Javascript
angularjs手动识别字符串中的换行符方法
2018/10/02 Javascript
原生JS实现多条件筛选
2020/08/19 Javascript
Python两个整数相除得到浮点数值的方法
2015/03/18 Python
Pandas统计重复的列里面的值方法
2019/01/30 Python
Django使用Jinja2模板引擎的示例代码
2019/08/09 Python
利用setuptools打包python程序的方法步骤
2020/01/18 Python
Nginx+Uwsgi+Django 项目部署到服务器的思路详解
2020/05/08 Python
Python 实现简单的客户端认证
2020/07/29 Python
mac系统下安装pycharm、永久激活、中文汉化详细教程
2020/11/24 Python
css3实现文字首尾衔接跑马灯的示例代码
2020/10/16 HTML / CSS
同学聚会欢迎辞
2014/01/14 职场文书
反腐倡廉演讲稿
2014/05/22 职场文书
党员干部一句话承诺
2014/05/30 职场文书
食品安全汇报材料
2014/08/18 职场文书
2014院党委领导班子对照检查材料思想汇报
2014/09/24 职场文书
转变工作作风心得体会
2016/01/23 职场文书
中秋节英文祝福语句(14句)
2019/09/11 职场文书
Mysql 性能监控及调优
2021/04/06 MySQL
Ruby处理YAML和json数据
2022/04/18 Ruby