zoukankan      html  css  js  c++  java
  • Bootstrap Paginator分页插件

    Bootstrap Paginator分页插件使用示例

    最近做的asp.netMVC项目中需要对数据列表进行分类,这个本来就是基于bootstrap开发的后台,因此也就想着bootstrap是否有分页插件呢,或者说是基于jquery支持的分页功能,这样整体的网站后台风格便能够统一,又不用自己去写一套分页的功能。

    首先便是要下载Bootstrap Paginator了,github上便有这个的开源项目提供下载:

    https://github.com/lyonlai/bootstrap-paginator

    首先视图的上面应该需要引入js和css文件,主要有三个文件,分别是bootstrap的css,jquery以及Paginator的js文件。其中网上搜到,貌似jquery必须要1.8版本以上,这个我没有亲自去测试看过。于是视图的文件引用便:

    <link href="css/bootstrap.css" rel="stylesheet">
    <script type="text/javascript" src="js/jquery-1.8.1.js"></script>
    <script type="text/javascript" src="js/bootstrap-paginator.js"></script>

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

    复制代码
    <script>
        $(function () {
            var carId = 1;
            $.ajax({
                url: "/OA/Setting/GetDate",
                datatype: 'json',
                type: "Post",
                data: "id=" + carId,
                success: function (data) {
                    if (data != null) {
                        $.each(eval("(" + data + ")").list, function (index, item) { //遍历返回的json
                            $("#list").append('<table id="data_table" class="table table-striped">');
                            $("#list").append('<thead>');
                            $("#list").append('<tr>');
                            $("#list").append('<th>Id</th>');
                            $("#list").append('<th>部门名称</th>');
                            $("#list").append('<th>备注</th>');
                            $("#list").append('<th>&nbsp;</th>');
                            $("#list").append('</tr>');
                            $("#list").append('</thead>');
                            $("#list").append('<tbody>');
                            $("#list").append('<tr>');
                            $("#list").append('<td>' + item.Id + '</td>');
                            $("#list").append('<td>' + item.Name + '</td>');
                            $("#list").append('<td>备注</td>');
                            $("#list").append('<td>');
                            $("#list").append('<button class="btn btn-warning" onclick="Edit(' + item.Id + ' );">修改</button>');
                            $("#list").append('<button class="btn btn-warning" onclick="Edit(' + item.Id + ' );">删除</button>');
                            $("#list").append('</td>');
                            $("#list").append('</tr>');
                            $("#list").append('</tbody>');
    
                            $("#list").append('<tr>');
                            $("#list").append('<td>内容</td>');
                            $("#list").append('<td>' + item.Message + '</td>');
                            $("#list").append('</tr>');
                            $("#list").append('</table>');
                        });
                        var pageCount = eval("(" + data + ")").pageCount; //取到pageCount的值(把返回数据转成object类型)
                        var currentPage = eval("(" + data + ")").CurrentPage; //得到urrentPage
                        var options = {
                            bootstrapMajorVersion: 2, //版本
                            currentPage: currentPage, //当前页数
                            totalPages: pageCount, //总页数
                            itemTexts: function (type, page, current) {
                                switch (type) {
                                    case "first":
                                        return "首页";
                                    case "prev":
                                        return "上一页";
                                    case "next":
                                        return "下一页";
                                    case "last":
                                        return "末页";
                                    case "page":
                                        return page;
                                }
                            },//点击事件,用于通过Ajax来刷新整个list列表
                            onPageClicked: function (event, originalEvent, type, page) {
                                $.ajax({
                                    url: "/OA/Setting/GetDate?id=" + page,
                                    type: "Post",
                                    data: "page=" + page,
                                    success: function (data1) {
                                        if (data1 != null) {
                                            $.each(eval("(" + data + ")").list, function (index, item) { //遍历返回的json
                                                $("#list").append('<table id="data_table" class="table table-striped">');
                                                $("#list").append('<thead>');
                                                $("#list").append('<tr>');
                                                $("#list").append('<th>Id</th>');
                                                $("#list").append('<th>部门名称</th>');
                                                $("#list").append('<th>备注</th>');
                                                $("#list").append('<th>&nbsp;</th>');
                                                $("#list").append('</tr>');
                                                $("#list").append('</thead>');
                                                $("#list").append('<tbody>');
                                                $("#list").append('<tr>');
                                                $("#list").append('<td>' + item.Id + '</td>');
                                                $("#list").append('<td>' + item.Name + '</td>');
                                                $("#list").append('<td>备注</td>');
                                                $("#list").append('<td>');
                                                $("#list").append('<button class="btn btn-warning" onclick="Edit(' + item.Id + ' );">修改</button>');
                                                $("#list").append('<button class="btn btn-warning" onclick="Edit(' + item.Id + ' );">删除</button>');
                                                $("#list").append('</td>');
                                                $("#list").append('</tr>');
                                                $("#list").append('</tbody>');
    
                                                $("#list").append('<tr>');
                                                $("#list").append('<td>内容</td>');
                                                $("#list").append('<td>' + item.Message + '</td>');
                                                $("#list").append('</tr>');
                                                $("#list").append('</table>');
                                            });
                                        }
                                    }
                                });
                            }
                        };
                        $('#example').bootstrapPaginator(options);
                    }
                }
            });
        })
    </script>
    复制代码

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

    复制代码
    <div class="span9">
            <label>部门列表</label>
            <hr />
            <div id="list"></div>
    
            <div id="example"></div>
        </div>
    复制代码

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

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

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

    最后显示的效果如下图:

    总结:

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

     
     

    当前标签: asp.netMVC

     
    Bootstrap Paginator分页插件使用示例 晓镜水月 2014-10-21 19:07 阅读:35 评论:0  
     
    MVC图片上传并显示缩略图 晓镜水月 2014-10-19 20:45 阅读:5 评论:0  
     
    asp.net MVC发布iis无法加载css,js和图片 晓镜水月 2014-10-01 23:41 阅读:17 评论:0  
     
    MVC文件上传 晓镜水月 2014-09-23 17:16 阅读:13 评论:0  
     
    MVC bundle(CSS或JS) 晓镜水月 2014-04-28 17:23 阅读:22 评论:0  
     
    mvc从xheditor编辑器中获取内容时存在潜在危险 晓镜水月 2014-04-26 09:20 阅读:20 评论:0  
     
    xheditor编辑器的使用 晓镜水月 2014-04-26 09:13 阅读:32 评论:0  
     
    Spring.net Could not load type from string value 晓镜水月 2014-04-19 16:19 阅读:25 评论:0  
     
    小试牛刀MVC简单网页 晓镜水月 2014-03-14 20:00 阅读:26 评论:0  
     
    创建第一个MVC 晓镜水月 2014-03-14 19:47 阅读:12 评论:0  
     
     
  • 相关阅读:
    js面对对象和jQuery的使用
    感知器PLA算法
    MSP430G2系列学习笔记
    数学建模——规划问题
    51单片机学习(一)
    打靶法求解两点边值问题
    GAOT工具箱(遗传算法)的应用
    数学建模方法
    关于mysql 5.7 版本登录时出现错误 1045的随笔
    oracle复习(二)
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/4041382.html
Copyright © 2011-2022 走看看