Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 1430|回复: 0

[默认分类] Bootstrap Paginator分页插件使用示例

[复制链接]
  • TA的每日心情
    开心
    2021-12-13 21:45
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    发表于 2018-6-5 10:20:26 | 显示全部楼层 |阅读模式
    最近做的asp.netMVC项目中需要对数据列表进行分类,这个本来就是基于bootstrap开发的后台,因此也就想着bootstrap是否有分页插件呢,或者说是基于jquery支持的分页功能,这样整体的网站后台风格便能够统一,又不用自己去写一套分页的功能。
    首先便是要下载Bootstrap Paginator了,github上便有这个的开源项目提供下载:
    https://github.com/lyonlai/bootstrap-paginator
    首先视图的上面应该需要引入js和css文件,主要有三个文件,分别是bootstrap的css,jquery以及Paginator的js文件。其中网上搜到,貌似jquery必须要1.8版本以上,这个我没有亲自去测试看过。于是视图的文件引用便:

    1. <link href="css/bootstrap.css" rel="stylesheet">
    2. <script type="text/javascript" src="js/jquery-1.8.1.js"></script>
    3. <script type="text/javascript" src="js/bootstrap-paginator.js"></script>
    复制代码


    然后,分页的功能当然是一个基于Ajax的局部刷新才能够吸引我们,当然这个便需要jquery的支持。之前自己搞的都是EasyUI的分页,这次也应该有点不同。
      

    1. <script>
    2.     $(function () {
    3.         var carId = 1;
    4.         $.ajax({
    5.             url: "/OA/Setting/GetDate",
    6.             datatype: "json",
    7.             type: "Post",
    8.             data: "id=" + carId,
    9.             success: function (data) {
    10.                 if (data != null) {
    11.                     $.each(eval("(" + data + ")").list, function (index, item) { //遍历返回的json
    12.                         $("#list").append("<table id="data_table" class="table table-striped">");
    13.                         $("#list").append("<thead>");
    14.                         $("#list").append("<tr>");
    15.                         $("#list").append("<th>Id</th>");
    16.                         $("#list").append("<th>部门名称</th>");
    17.                         $("#list").append("<th>备注</th>");
    18.                         $("#list").append("<th> </th>");
    19.                         $("#list").append("</tr>");
    20.                         $("#list").append("</thead>");
    21.                         $("#list").append("<tbody>");
    22.                         $("#list").append("<tr>");
    23.                         $("#list").append("<td>" + item.Id + "</td>");
    24.                         $("#list").append("<td>" + item.Name + "</td>");
    25.                         $("#list").append("<td>备注</td>");
    26.                         $("#list").append("<td>");
    27.                         $("#list").append("<button class="btn btn-warning" onclick="Edit(" + item.Id + " );">修改</button>");
    28.                         $("#list").append("<button class="btn btn-warning" onclick="Edit(" + item.Id + " );">删除</button>");
    29.                         $("#list").append("</td>");
    30.                         $("#list").append("</tr>");
    31.                         $("#list").append("</tbody>");
    32.                         $("#list").append("<tr>");
    33.                         $("#list").append("<td>内容</td>");
    34.                         $("#list").append("<td>" + item.Message + "</td>");
    35.                         $("#list").append("</tr>");
    36.                         $("#list").append("</table>");
    37.                     });
    38.                     var pageCount = eval("(" + data + ")").pageCount; //取到pageCount的值(把返回数据转成object类型)
    39.                     var currentPage = eval("(" + data + ")").CurrentPage; //得到urrentPage
    40.                     var options = {
    41.                         bootstrapMajorVersion: 2, //版本
    42.                         currentPage: currentPage, //当前页数
    43.                         totalPages: pageCount, //总页数
    44.                         itemTexts: function (type, page, current) {
    45.                             switch (type) {
    46.                                 case "first":
    47.                                     return "首页";
    48.                                 case "prev":
    49.                                     return "上一页";
    50.                                 case "next":
    51.                                     return "下一页";
    52.                                 case "last":
    53.                                     return "末页";
    54.                                 case "page":
    55.                                     return page;
    56.                             }
    57.                         },//点击事件,用于通过Ajax来刷新整个list列表
    58.                         onPageClicked: function (event, originalEvent, type, page) {
    59.                             $.ajax({
    60.                                 url: "/OA/Setting/GetDate?id=" + page,
    61.                                 type: "Post",
    62.                                 data: "page=" + page,
    63.                                 success: function (data1) {
    64.                                     if (data1 != null) {
    65.                                         $.each(eval("(" + data + ")").list, function (index, item) { //遍历返回的json
    66.                                             $("#list").append("<table id="data_table" class="table table-striped">");
    67.                                             $("#list").append("<thead>");
    68.                                             $("#list").append("<tr>");
    69.                                             $("#list").append("<th>Id</th>");
    70.                                             $("#list").append("<th>部门名称</th>");
    71.                                             $("#list").append("<th>备注</th>");
    72.                                             $("#list").append("<th> </th>");
    73.                                             $("#list").append("</tr>");
    74.                                             $("#list").append("</thead>");
    75.                                             $("#list").append("<tbody>");
    76.                                             $("#list").append("<tr>");
    77.                                             $("#list").append("<td>" + item.Id + "</td>");
    78.                                             $("#list").append("<td>" + item.Name + "</td>");
    79.                                             $("#list").append("<td>备注</td>");
    80.                                             $("#list").append("<td>");
    81.                                             $("#list").append("<button class="btn btn-warning" onclick="Edit(" + item.Id + " );">修改</button>");
    82.                                             $("#list").append("<button class="btn btn-warning" onclick="Edit(" + item.Id + " );">删除</button>");
    83.                                             $("#list").append("</td>");
    84.                                             $("#list").append("</tr>");
    85.                                             $("#list").append("</tbody>");
    86.                                             $("#list").append("<tr>");
    87.                                             $("#list").append("<td>内容</td>");
    88.                                             $("#list").append("<td>" + item.Message + "</td>");
    89.                                             $("#list").append("</tr>");
    90.                                             $("#list").append("</table>");
    91.                                         });
    92.                                     }
    93.                                 }
    94.                             });
    95.                         }
    96.                     };
    97.                     $("#example").bootstrapPaginator(options);
    98.                 }
    99.             }
    100.         });
    101.     })
    102. </script>
    复制代码


    而在视图的主体部分便有两个div,一个用来呈现数据列表,一个用来放置选择页面的导航。

    1. <div class="span9">
    2.         <label>部门列表</label>
    3.         <hr />
    4.         <div id="list"></div>
    5.         <div id="example"></div>
    6.     </div>
    复制代码


    而后台这个GetDate的方法就像下面这样:

    1. public ActionResult GetDate(int id, int? page)
    2.         {
    3.             int pageIndex = page ?? 1;//当前页
    4.             const int pageSize = 2;//这里用来设置每页要展示的数据数量,建议把这个写到web.config中来全局控制
    5.             //获取需要展示的部门数据
    6.             IEnumerable<MODEL.qgoa_department> list = OperateContext.Current.BLLSession.Iqgoa_departmentBLL.GetPagedList(pageIndex, pageSize, x => x.Id!=null, x=>x.Id);
    7.             //得到数据的条数
    8.             int rowCount = list.Count();
    9.             //通过计算,得到分页应该需要分几页,其中不满一页的数据按一页计算
    10.             if(rowCount%pageSize!=0)
    11.             {
    12.                 rowCount = rowCount / pageSize + 1;
    13.             }
    14.             else
    15.             {
    16.                 rowCount = rowCount / pageSize;
    17.             }
    18.             //转成Json格式
    19.             var strResult = "{"pageCount":"+rowCount+","CurrentPage":"+pageIndex+","list":" + JsonConvert.SerializeObject(list) + "}";
    20.             return Json(strResult, JsonRequestBehavior.AllowGet);
    21.         }
    复制代码


    这个方法还是有点缺陷的,可以写的更加完美,就好像上面那个pageSize这个可以通过读取配置文件web.config来全局修改,这样管理起来也方便,另外对于页面这种属性:页码,当前页,数据数量等等的信息,可以做一个类来存储,如果网站的项目比较大的话,这样更加方便我们去更改自己的代码。
    最后显示的效果如下图:

    总结:
    尽管内容不多,但是这个的确花了我不少时间,主要是bootstrap的这个插件的开发文档找了好久都找不到,不像之前EasyUI那样文件比较多,而且例子在文档中也比较详细了,xmfdsh我正打算找个时间来总结下自己写的一套分页的做法,那样就不用仅仅拘束于这些写好的框架。
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-4-20 19:30 , Processed in 0.392504 second(s), 46 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表