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 相关文章推荐
IE和firefox浏览器的event事件兼容性汇总
Dec 06 Javascript
Dom与浏览器兼容性说明
Oct 25 Javascript
JS实现div居中示例
Apr 17 Javascript
JavaScript组合拼接字符串的效率对比测试
Nov 06 Javascript
AngularJS快速入门
Apr 02 Javascript
学习JavaScript设计模式之享元模式
Jan 18 Javascript
全面解析Bootstrap中form、navbar的使用方法
May 30 Javascript
面试常见的js算法题
Mar 23 Javascript
angular6.0开发教程之如何安装angular6.0框架
Jun 29 Javascript
js实现抽奖的两种方法
Mar 19 Javascript
ES6中的类(Class)示例详解
Dec 09 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 MSSQL 存储过程的方法
2008/12/24 PHP
PHP数组内存耗用太多问题的解决方法
2010/04/05 PHP
ThinkPHP提示错误Fatal error: Allowed memory size的解决方法
2015/02/12 PHP
图文介绍PHP添加Redis模块及连接
2015/07/28 PHP
PHP 使用二进制保存用户状态的实例
2018/01/29 PHP
详解PHP实现支付宝小程序用户授权的工具类
2018/12/25 PHP
JS事件Event元素(兼容IE,Firefox,Chorme)
2012/11/01 Javascript
原生JS实现表单checkbook获取已选择的值
2013/07/21 Javascript
jquery插件冲突(jquery.noconflict)解决方法分享
2014/03/20 Javascript
AngularJS身份验证的方法
2016/02/17 Javascript
jQuery实现简单的网页换肤效果示例
2016/09/18 Javascript
Angular-UI Bootstrap组件实现警报功能
2018/07/16 Javascript
打通前后端构建一个Vue+Express的开发环境
2018/07/17 Javascript
如何使用webpack打包一个库library的方法步骤
2019/12/18 Javascript
nestjs返回给前端数据格式的封装实现
2021/02/22 Javascript
vue+flask实现视频合成功能(拖拽上传)
2021/03/04 Vue.js
Python常用列表数据结构小结
2014/08/06 Python
python自动化脚本安装指定版本python环境详解
2017/09/14 Python
Django中的CBV和FBV示例介绍
2018/02/25 Python
Python使用re模块正则提取字符串中括号内的内容示例
2018/06/01 Python
Python3.5模块的定义、导入、优化操作图文详解
2019/04/27 Python
Python Pandas 获取列匹配特定值的行的索引问题
2019/07/01 Python
pycharm显示远程图片的实现
2019/11/04 Python
Python的形参和实参使用方式
2019/12/24 Python
TensorFlow低版本代码自动升级为1.0版本
2021/02/20 Python
CSS3效果:自定义“W”形运行轨迹实例
2017/03/29 HTML / CSS
深入了解canvas在移动端绘制模糊的问题解决
2019/04/30 HTML / CSS
日本无添加化妆品:HABA
2016/08/18 全球购物
便利店投资的创业计划书
2014/01/12 职场文书
酒店营销策划方案
2014/02/07 职场文书
个人作风建设剖析材料
2014/10/11 职场文书
农村党员学习党的群众路线教育实践活动心得体会
2014/11/04 职场文书
资金申请报告范文
2015/05/14 职场文书
python中的None与NULL用法说明
2021/05/25 Python
常用的Python代码调试工具总结
2021/06/23 Python
pycharm部署django项目到云服务器的详细流程
2021/06/29 Python