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 对象链式操作测试代码
Apr 25 Javascript
JS实现跟随鼠标闪烁转动色块的方法
Feb 26 Javascript
JavaScript中的依赖注入详解
Mar 18 Javascript
浏览器中url存储的JavaScript实现
Jul 07 Javascript
JavaScript使用FileSystemObject对象写入文本文件内容的方法
Aug 05 Javascript
轻松搞定jQuery.noConflict()
Feb 15 Javascript
js中class的点击事件没有效果的解决方法
Oct 13 Javascript
微信小程序模板之分页滑动栏
Feb 10 Javascript
Bootstrap笔记之缩略图、警告框实例详解
Mar 09 Javascript
基于node+vue实现简单的WebSocket聊天功能
Feb 01 Javascript
微信小程序后端实现授权登录
Feb 24 Javascript
微信小程序实现导航栏和内容上下联动功能代码
Jun 29 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守护进程 加linux命令nohup实现任务每秒执行一次
2011/07/04 PHP
2014过年倒计时示例
2014/01/31 PHP
symfony2.4的twig中date用法分析
2016/03/18 PHP
PHP的反射机制实例详解
2017/03/29 PHP
JAVASCRIPT HashTable
2007/01/22 Javascript
一页面多XMLHttpRequest对象
2007/01/22 Javascript
网页中的图片的处理方法与代码
2009/11/26 Javascript
js下拉菜单语言选项简单实现
2013/09/23 Javascript
javascript中定义私有方法说明(private method)
2014/01/27 Javascript
js中的caller和callee属性介绍和例子
2014/06/07 Javascript
js中的getAttribute方法使用示例
2014/08/01 Javascript
JavaScript实现重置表单(reset)的方法
2015/04/02 Javascript
nodejs个人博客开发第六步 数据分页
2017/04/12 NodeJs
vue 实现cli3.0中使用proxy进行代理转发
2019/10/30 Javascript
[01:10:03]OG vs EG 2018国际邀请赛淘汰赛BO3 第三场 8.23
2018/08/24 DOTA
[02:36]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Magma 选手采访
2021/03/11 DOTA
python 远程统计文件代码分享
2015/05/14 Python
python学习之编写查询ip程序
2016/02/27 Python
python遍历序列enumerate函数浅析
2017/10/17 Python
使用Python更换外网IP的方法
2018/07/09 Python
使用Python正则表达式操作文本数据的方法
2019/05/14 Python
Python递归及尾递归优化操作实例分析
2020/02/01 Python
在Python中通过threshold创建mask方式
2020/02/19 Python
利用python生成照片墙的示例代码
2020/04/09 Python
在keras中实现查看其训练loss值
2020/06/16 Python
django haystack实现全文检索的示例代码
2020/06/24 Python
Selenium环境变量配置(火狐浏览器)及验证实现
2020/12/07 Python
物业工作计划书
2014/01/10 职场文书
好邻里事迹材料
2014/01/16 职场文书
继承公证书样本
2014/04/04 职场文书
工作求职信
2014/07/04 职场文书
五一劳动节演讲稿
2014/09/12 职场文书
长城导游词400字
2015/01/30 职场文书
泰坦尼克号观后感
2015/06/04 职场文书
想要创业,那么你做好准备了吗?
2019/07/01 职场文书
浅谈MySQL 亿级数据分页的优化
2021/06/15 MySQL