最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

BootStrap+Table排序分页序号

来源:动视网 责编:小采 时间:2020-11-27 19:54:23
文档

BootStrap+Table排序分页序号

BootStrap+Table排序分页序号:这次给大家带来BootStrap+Table排序分页序号,BootStrap+Table排序分页序号的注意事项有哪些,下面就是实战案例,一起来看一下。前言 在使用bootstrap table的时候难免会用到分页,分页它提供了两种方式:client客户端分页、server服务端分页两种方
推荐度:
导读BootStrap+Table排序分页序号:这次给大家带来BootStrap+Table排序分页序号,BootStrap+Table排序分页序号的注意事项有哪些,下面就是实战案例,一起来看一下。前言 在使用bootstrap table的时候难免会用到分页,分页它提供了两种方式:client客户端分页、server服务端分页两种方


这次给大家带来BootStrap+Table排序分页序号,BootStrap+Table排序分页序号的注意事项有哪些,下面就是实战案例,一起来看一下。

前言

  • 在使用bootstrap table的时候难免会用到分页,分页它提供了两种方式:client客户端分页、server服务端分页两种方式。

  • 在项目中一般是不用client分页的,一般表格数据量大,用client分页会导致缓存爆炸,所以我们选择server分页。

  • 存在即合理,client也是可以用的(数据量特别少的时候),相对于server方式,它的分页序号是自动连续的。而server方式分页的序号就不连续的了(每一页都是从1开始,而不是从上一页的结束序号开始),本文就着重解决这个问题。

  • 原始分页结果

  • client分页,使用bootstrap table的formatter中的index索引值可以使得序号是连续的

  • server分页,由于缺乏当前页的位置pageNumber和每页的大小pageSize,所以无法确定索引值,用formatter返回index就是只有当前页的索引。

  • 解决步骤

    出现这个问题的原因是什么呢,由于我们使用的formatter返回的index参数,这个参数是表格的索引,client的所有n条总数据都在客户端,index就为1-n,而server分页每次服务器只返回的是当前页的数据到客户端,所以index就只有1-pageSize,pageSize为一页的数据量,所以就出现这个问题了。

    针对server服务器只返回一页的数据的原因导致每次翻页的序号都从1开始的问题,那么我们就需要把服务端和客户端的页面数据关联起来,所以我们在原始的formatter的基础上修改,让它传递这个参数就ok了。

    首先我们看boostrap table的js源码,可以看到一些内部函数的写法,如:

     BootstrapTable.prototype.showRow = function (params) {
     this.toggleRow(params, true);
     };

    那么我们可以自己定义一个功能函数吗?答案是肯定的,我们也照着写一个返回我们需要的索引值的函数。定义如下:

     BootstrapTable.prototype.getPage = function (param) {
     return this.options.pageSize * this.options.pageNumber + 1;
     }

    我们能写这个函数传递索引参数的原因是,pageSize和pageNumber本身就是bootstrap table的内部参数,全部都集成在options中,所以你有这个参数我才能写函数返回这个值。

    写好函数还得把这个函数写进内部函数列表中,不然也用不了,如下把getIndex像它原来的函数那样插入进去(第四行):

    var allowedMethods = [
     'getOptions',
     'getSelections', 'getAllSelections', 'getData', 'getIndex',
     'load', 'append', 'prepend', 'remove', 'removeAll',
     'insertRow', 'updateRow', 'updateCell', 'updateByUniqueId', 'removeByUniqueId',
     'getRowByUniqueId', 'showRow', 'hideRow', 'getHiddenRows',
     'mergeCells',
     'checkAll', 'uncheckAll', 'checkInvert',
     'check', 'uncheck',
     'checkBy', 'uncheckBy',
     'refresh',
     'resetView',
     'resetWidth',
     'destroy',
     'showLoading', 'hideLoading',
     'showColumn', 'hideColumn', 'getHiddenColumns', 'getVisibleColumns',
     'showAllColumns', 'hideAllColumns',
     'filterBy',
     'scrollTo',
     'getScrollPosition',
     'selectPage', 'prevPage', 'nextPage',
     'togglePagination',
     'toggleView',
     'refreshOptions',
     'resetSearch',
     'expandRow', 'collapseRow', 'expandAllRows', 'collapseAllRows',
     'updateFormatText'
     ];

    这样我们就可以在表中使用,在formatter中使用了getIndex方法,实现了分页序号的连续(editable: {…}是行编辑,请查看我另一篇博客):

    $("tb_departments").bootstrapTable({
     method: 'post', //请求方式
     height: 500,
     toolbar: '#toolbar', //工具按钮用哪个容器
     striped: true, //是否显示行间隔色
     cache: false, //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
     pagination: true, //是否显示分页
     sortable: true, //是否启用排序
     sortOrder: "asc", //排序方式
     sidePagination: "server", //分页方式:client客户端分页,server服务端分页
     pageNumber: 1, //初始化加载第一页,默认第一页
     pageSize: 4, //每页的记录行数(*)
     pageList: [4, 20, 25, 30], //可供选择的每页的行数(*)
     //search: true, //是否显示表格搜索,此搜索是客户端搜索,不会进服务端,所以,个人感觉意义不大
     strictSearch: true,
     //showPaginationSwitch: true,
     showExport: true,
     exportDataType: "all",
     showExport: true, //是否显示导出按钮
     buttonsAlign:"right", //按钮位置
     exportTypes:[ 'csv', 'txt', 'excel', 'pdf'], //导出文件类型
     Icons:'glyphicon-export',
     showColumns: true, //是否显示所有的列
     showToggle:true, //是否显示详细视图和列表视图的切换按钮
     showExportAll:true, //是否显示全部导出按钮
     showRefresh: false, //是否显示刷新按钮
     minimumCountColumns: 1, //最少允许的列数
     clickToSelect: true, //是否启用点击选中行
     cardView: false, //是否显示详细视图
     detailView: false, //是否显示父子表
     showHeader: true,
     onEditableSave: function (field, row, oldValue, $el) {
     $.ajax({
     success: function (data, status) {
     if (status == "success") {
     alert("编辑成功");
     }
     },
     error: function () {
     alert("Error");
     },
     complete: function () {
     }
     });
     },
     columns: [
     {
     title: '编号',//标题
     formatter: function (value, row, index) {
     return $("tb_departments").bootstrapTable("getIndex");
     }
     },
     {
     align: "left",//水平居中
     halign: "left",//垂直居中
     field: "vehplate",
     title: "车牌号码",
     editable: {
     type: 'text',
     title: "车牌号码",
     noeditFormatter: function (value,row,index) {
     var result={filed:"vehplate",value:value};
     return result;
     },
     validate: function (value) {
     if ($.trim(value) == '') {
     return '车牌号码不能为空!';
     }
     }
     }
     },{
     align: "left",
     halign: "left",
     field: "price",
     sortable:true,
     title: "原值(万元)",
     editable: {
     type: 'text',
     title: "原值(万元)",
     noeditFormatter: function (value,row,index) {
     var result={filed:"price",value:value,class:"badge bg-green",style:"padding:5px 10px;"};
     return result;
     }
     }
     },
     {
     align: "left",
     halign: "left",
     field: "netvalue",
     sortable:true,
     title: "净值(万元)",
     editable: {
     type: 'text',
     title: "净值(万元)",
     noeditFormatter: function (value,row,index) {
     var result={filed:"netvalue",value:value,class:"badge bg-orange",style:"padding:5px 10px;"};
     return result;
     }
     }
     },
     {
     align: "left",
     halign: "left",
     field: "accumulatedmileage",
     sortable:true,
     title: "累计里程",
     editable: {
     type: 'text',
     title: "累计里程",
     noeditFormatter: function (value,row,index) {
     var result={filed:"accumulatedmileage",value:value};
     return result;
     }
     }
     },
     {
     align: "left",
     halign: "left",
     field: "accumulateddepreciation",
     sortable:true,
     title: "累计折旧(万元)",
     editable: {
     type: 'text',
     title: "累计折旧(万元)",
     noeditFormatter: function (value,row,index) {
     var result={filed:"accumulateddepreciation",value:value};
     return result;
     }
     }
     },
     {
     align: "left",
     halign: "left",
     field: "vehClass",
     title: "车型"
     },
     {
     align: "left",
     halign: "left",
     field: "vehtype1Desc",
     title: "车类"
     }, {
     align: "left",
     halign: "left",
     field: "vehtype2Desc",
     //width: 100,
     title: "车类明细"
     }
     ],
     onPageChange:function(number, size)
     {
     //设置在分页事件触发时,传递分页参数给后台,重新加载数据
     me.queryBaseParam.limit=size;
     me.queryBaseParam.start=number;
     me.ajaxGetData();
     },
     onSort: function (name, order) {
     //传递参数给后台进行排序
     me.queryBaseParam.sort=name;
     me.queryBaseParam.order=order;
     me.ajaxGetData();
     }
     });

    最后的结果和client分页的序号是一样的。

    相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

    推荐阅读:

    JS+canvas绘制饼状统计图

    js实现字符中文汉字=两个字符

    文档

    BootStrap+Table排序分页序号

    BootStrap+Table排序分页序号:这次给大家带来BootStrap+Table排序分页序号,BootStrap+Table排序分页序号的注意事项有哪些,下面就是实战案例,一起来看一下。前言 在使用bootstrap table的时候难免会用到分页,分页它提供了两种方式:client客户端分页、server服务端分页两种方
    推荐度:
    标签: 排序 序号 分页
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top