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对象和属性的创建方法
Jan 15 Javascript
鼠标移入移出事件改变图片的分辨率的两种方法
Dec 17 Javascript
Javascript设置对象的ReadOnly属性(示例代码)
Dec 25 Javascript
引用外部脚本时script标签关闭的写法
Jan 20 Javascript
jQuery实现连续动画效果实例分析
Oct 09 Javascript
canvas实现流星雨的背景效果
Jan 13 Javascript
jquery实现放大镜简洁代码(推荐)
Jun 08 jQuery
Angular 开发学习之Angular CLI的安装使用
Dec 31 Javascript
Angular服务Request异步请求的实例讲解
Aug 13 Javascript
vue-cli 脚手架基于Nightwatch的端到端测试环境的过程
Sep 30 Javascript
vue中使用better-scroll实现滑动效果及注意事项
Nov 15 Javascript
jQuery 移除事件的方法
Jun 20 jQuery
全面解析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写MySQL数据 实现代码
2009/06/15 PHP
无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装最快的解决办法
2010/08/01 PHP
php简单实现多字节字符串翻转的方法
2015/03/31 PHP
分享5个非常有用的Laravel Blade指令
2018/05/30 PHP
Ubuntu 16.04中Laravel5.4升级到5.6的步骤
2018/12/07 PHP
js 剪切板应用clipboardData详细解析
2013/12/17 Javascript
JavaScript字符串对象split方法入门实例(用于把字符串分割成数组)
2014/10/16 Javascript
JavaScript实现twitter puddles算法实例
2014/12/06 Javascript
JS实现CheckBox复选框全选、不选或全不选功能
2020/07/28 Javascript
js 将图片连接转换成base64格式的简单实例
2016/08/10 Javascript
基于Bootstrap table组件实现多层表头的实例代码
2017/09/07 Javascript
Vue实现购物车详情页面的方法
2019/08/20 Javascript
vue.config.js中配置Vue的路径别名的方法
2020/02/11 Javascript
Vue实现仿iPhone悬浮球的示例代码
2020/03/13 Javascript
Vue实现购物小球抛物线的方法实例
2020/11/22 Vue.js
python pickle 和 shelve模块的用法
2013/09/16 Python
python传递参数方式小结
2015/04/17 Python
简单谈谈Python中的反转字符串问题
2016/10/24 Python
python导入时小括号大作用
2017/01/10 Python
python出现&quot;IndentationError: unexpected indent&quot;错误解决办法
2017/10/15 Python
Python 字符串与二进制串的相互转换示例
2018/07/23 Python
Python高级特性切片(Slice)操作详解
2018/09/27 Python
Django 自定义分页器的实现代码
2019/11/24 Python
金融专业毕业生推荐信
2013/11/26 职场文书
11月升旗仪式讲话稿
2014/02/15 职场文书
集体婚礼策划方案
2014/02/22 职场文书
领导失职检讨书
2014/02/24 职场文书
共产党员公开承诺书范文
2014/03/28 职场文书
党章党规党纪学习心得体会
2016/01/14 职场文书
调解协议书范本
2016/03/21 职场文书
2016年第二十届“母亲节暨幸福工程救助贫困母亲活动日”活动总结
2016/04/06 职场文书
优秀范文:《但愿人长久》教学反思3篇
2019/10/24 职场文书
react中props 的使用及进行限制的方法
2021/04/28 Javascript
Pycharm 如何设置HTML文件自动补全代码或标签
2021/05/21 Python
利用Python实现Picgo图床工具
2021/11/23 Python
win10系统计算机图标怎么调出来?win10调出计算机图标的方法
2022/08/14 数码科技