{ field: "customer", title: "客户", align: 'center', valign: "middle", formatter: function(value, row, index) { if (value == null) { return ''; } else { return '<span style="width:85px;">' + value + '</span>'; } } },
return '<span style="width:50px;word-break:break-all; word-wrap:break-all;">' + value + '</span>';
sidePagination: "server", //分页方式:client客户端分页,server服务端分页(*)
页码跳转:设置:paginationShowPageGo: true
在html中添加:bootstrap-table-pagejump.js,具体内容以下所示:
/** * @author zhaoshuxue <zhaoshuxue@163.com> * extensions: https://github.com/zhaoshuxue/bootstrap-table/src/extensions/page-jump */ (function($) { 'use strict'; $.extend($.fn.bootstrapTable.defaults, { // 默认不显示 paginationShowPageGo: false }); $.extend($.fn.bootstrapTable.locales, { pageGo: function() { return 'Page Jump'; } }); $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales); var BootstrapTable = $.fn.bootstrapTable.Constructor, _initPagination = BootstrapTable.prototype.initPagination; BootstrapTable.prototype.initPagination = function() { _initPagination.apply(this, Array.prototype.slice.apply(arguments)); if (this.options.paginationShowPageGo) { var html = []; html.push( '<ul class="pagination-jump">', '<li class=""><span>' + this.options.pageGo() + ':</span></li>', '<li class=""><input type="text" class="page-input" value="' + this.options.pageNumber + '" /></li>', '<li class="page-go"><a class="jump-go" href="">GO</a></li>', '</ul>'); this.$pagination.find('ul.pagination').after(html.join('')); this.$pagination.find('.page-go').off('click').on('click', $.proxy(this.onPageGo, this)); this.$pagination.find('.page-input').off('keyup').on('keyup', function() { this.value = this.value.length == 1 ? this.value.replace(/[^1-9]/g, '') : this.value.replace(/\D/g, ''); }); } }; BootstrapTable.prototype.onPageGo = function(event) { // var $this = $(event.currentTarget); var $toPage = this.$pagination.find('.page-input'); if (this.options.pageNumber === +$toPage.val()) { return false; } this.selectPage(+$toPage.val()); // this.options.pageNumber = +$toPage.val(); // this.updatePagination(event); // $this.prev().find('input').val(this.options.pageNumber); return false; }; })(jQuery);
onLoadSuccess: function(res) { console.log(res); var data = $('#oilTable').bootstrapTable('getData', true); // 合并单元格 var fieldList = ["operator", "expense"]; mergeCells(data, "operator", 1, $('#oilTable'), fieldList); // oil_file },
// 合并单元格 /** * 合并单元格 * * @param data * 原始数据(在服务端完成排序) * @param fieldName * 合并参照的属性名称 * @param colspan * 合并开始列 * @param target * 目标表格对象 * @param fieldList * 要合并的字段集合 */ function mergeCells(data, fieldName, colspan, target, fieldList) { // 声明一个map计算相同属性值在data对象出现的次数和 var sortMap = {}; for (var i = 0; i < data.length; i++) { for (var prop in data[i]) { //例如people.unit.name var fieldArr = fieldName.split("."); getCount(data[i], prop, fieldArr, 0, sortMap); } } var index = 0; for (var prop in sortMap) { var count = sortMap[prop]; for (var i = 0; i < fieldList.length; i++) { $(target).bootstrapTable('mergeCells', { index: index, field: fieldList[i], colspan: colspan, rowspan: count }); console.log(count); console.log("index=" + index); // $(target).bootstrapTable("rowStyle", { index: index, }) } index += count; } } /** * 递归到最后一层 统计数据重复次数 * 好比例如people.unit.name 就一直取到name * 相似于data["people"]["unit"]["name"] */ function getCount(data, prop, fieldArr, index, sortMap) { if (index == fieldArr.length - 1) { if (prop == fieldArr[index]) { var key = data[prop]; if (sortMap.hasOwnProperty(key)) { sortMap[key] = sortMap[key] + 1; } else { sortMap[key] = 1; } } return; } if (prop == fieldArr[index]) { var sdata = data[prop]; index = index + 1; getCount(sdata, fieldArr[index], fieldArr, index, sortMap); } }
//单击行时 onClickRow: function(row, $element) { index = $element.data('index'); }, //点击每列前的checkbox时 onCheck: function(row, $element) { index = $element.data('index'); }, //主要是想实现无ajax的前台填充更新页面的数据,使用updateCell方法。 $("#oilTable").bootstrapTable('updateCell', { index: index, field: "projectSn", // 字段名称 value: $("#add_model .projectSn").val() // 新的值 });
function loadMaintainList(pageInfo) { if (pageInfo == undefined) { var pageInfo = { pageNumber: 1, pageSize: 7 }; } $("#maintainTable").bootstrapTable('destroy').bootstrapTable({ url: allurl + "/car-management/carmaintain/query.action", dataType: 'json', striped: true, // 是否显示行间隔色 toggle: "table", toolbar: "toolbar_maintainTable", pagination: "true", // 是否显示分页(*) sortOrder: "asc", // 排序方式 sidePagination: "server", // 分页方式:client客户端分页,server服务端分页(*) pageNumber: pageInfo.pageNumber, // 初始化加载第一页,默认第一页 pageSize: pageInfo.pageSize, // 每页的记录行数(*) paginationShowPageGo: true, pageList: [10, 30, 50, 70, 100, 150], // 可供选择的每页的行数(*) search: false, // 是否搜索查询 showColumns: true, // 是否显示全部的列 showRefresh: false, // 是否显示刷新按钮 sortable: true, // 是否启用排序 minimumCountColumns: 2, // 最少容许的列数 clickToSelect: true, // 是否启用点击选中行 searchOnEnterKey: true, // 设置为 true时,按回车触发搜索方法 strictSearch: false, // 设置为 true启用全匹配搜索, 不然为模糊搜索 showToggle: true, // 是否显示切换视图(table/card)按钮 searchAlign: "right", showExport: true, exportDataType: "selected", buttonsAlign: "right", // 按钮位置 exportTypes: ['excel'], // 导出文件类型 exportOptions: { ignoreColumn: [17], // 忽略某一列的索引 fileName: '测试车辆-车辆维修列表', // 文件名称设置 worksheetName: 'sheet1', // 表格工做区名称 tableName: '测试车辆-车辆维修列表', excelstyles: ['background-color', 'color', 'font-size', 'font-weight'] // onMsoNumberFormat: DoOnMsoNumberFormat }, uniqueId: "vSn", // 每一行的惟一标识 onLoadSuccess: function(res) { console.log(res); if (window.islogin == undefined || window.islogin == null) { $('#maintainTable').bootstrapTable('hideColumn', 'operate'); } else if (window.islogin.data.roles.length > 0) { var userrole = []; for (var i = 0; i < window.islogin.data.roles.length; i++) { userrole.push(window.islogin.data.roles[i].name); } var userroleString = userrole.toString(); // console.log(userroleString.indexOf("维修技师") != -1); if (userroleString.indexOf("超级管理员") != -1 || (userroleString.indexOf("维修管理员") != -1 || userroleString.indexOf("维修技师") != -1)) { $('#maintainTable').bootstrapTable('showColumn', 'operate'); } else { $('#maintainTable').bootstrapTable('hideColumn', 'operate'); } } }, onLoadError: function() { console.log("数据加载失败!"); }, onPageChange: function(page, size) { var pageInfo = { pageNumber: page, pageSize: size }; window.sessionStorage.pageInfo = JSON.stringify(pageInfo); }, // 获得查询的参数 queryParams: function(params) { // 这里的键的名字和控制器的变量名必须一直,这边改动,控制器也须要改为同样的 var temp = { size: params.limit, // 页面大小 page: (params.offset / params.limit) + 1, // 页码 sortOrder: "desc", // 排位命令(desc 降序,asc) vSn: $(".mainList_vSn").val(), status: $("#mainList_status option:selected").val() }; return temp; }, columns: [ [{ "title": "测试车辆维修列表", "halign": "center", "align": "center", "colspan": 17 }], [{ field: "checkbox", title: "全选", checkbox: true, valign: "middle", align: 'center', width: "4%", colspan: 1, rowspan: 2 }, { field: 'ids', title: "序号", valign: "middle", align: "center", width: "4%", colspan: 1, rowspan: 2, formatter: function(value, row, index) { var pageSize = $("#maintainTable").bootstrapTable('getOptions').pageSize; // 经过表的#id var pageNumber = $("#maintainTable").bootstrapTable('getOptions').pageNumber; // 经过表的#id return pageSize * (pageNumber - 1) + index + 1; // 返回每条的序号: } }, { title: "送修申请表", valign: "middle", align: "center", colspan: 7, rowspan: 1 }, { field: 'status', title: "维修状态", valign: "middle", align: "center", colspan: 1, rowspan: 2, width: "5%", background: '#BFEBEB', formatter: function(value, row, index) { var a = ""; if (value == null) { var a = ''; } else if (value == "排队中") { var a = '<span style="color:red">排队中</span>'; } else if (value == "维修中") { var a = '<span style="color:green">维修中</span>'; } else if (value == "已完成") { var a = '<span style="color:blue">已完成</span>'; } return a; } }, { title: "维修协调员填写", valign: "middle", align: "center", colspan: 7, rowspan: 1 } ], [{ field: 'vSn', title: '车辆编号', valign: "middle", align: "center", width: "6%" }, { field: 'item', title: '维修项目', valign: "middle", align: "center", width: "8%" }, { field: 'send_park', title: '停放地点', valign: "middle", align: "center", width: "6%" }, { field: 'applyRemark', title: '备注', valign: "middle", align: "center", width: "5%" }, { field: 'applyPeople', title: '申请人', valign: "middle", align: "center", width: "6%" }, { field: 'applyTEL', title: '电话', valign: "middle", align: "center", width: "6%" }, { field: 'applytime', title: '申请日期', valign: "middle", align: "center", width: "7%" }, { field: 'workContent', title: '工做内容', valign: "middle", align: "center", width: "6%" }, { field: 'operator', title: '操做员', valign: "middle", align: "center", width: "5%" }, { field: 'operatorTEL', title: '电话', valign: "middle", align: "center", width: "5%" }, { field: 'forecastTime', title: '预计完成时间', valign: "middle", align: "center", width: "5%" }, { field: 'fin_park', title: '停放地点', valign: "middle", align: "center", width: "5%" }, { field: 'remark', title: '备注', valign: "middle", align: "center", width: "5%" }, { field: 'operate', title: '操做', valign: "middle", align: 'center', width: "12%", events: maintainListoperateEvents, formatter: maintainListFormatter } ] ] }) }
当前台分页时,发现框架的导出:导出所有、导出当前页、导出选中项都没有问题,能够实现。
可是当采用后台分页的时候,发现框架只能实现导出当前页,其余两种导出模式彻底失效。要想在后台分页的状况下,实现前台数据导出选中项,能够修改bootstrap-table-export.js的源码里面的select下面的内容,将原内容删掉,修改添加的代码为:html
else if (that.options.exportDataType === 'selected') { // var data = that.getData(), // selectedData = that.getAllSelections(); // that.load(selectedData); // doExport(); // that.load(data); // 经检测试验发现:当bootstrap-table // 要想实现:后台分页后,前台导出选中项数据,修改源码为如下代码便可。 var trs = that.$body.children(); for (var i = 0; i < trs.length; i++) { var $this = $(trs[i]); if (!$this.find(sprintf('[name="%s"]', that.options.selectItemName)).prop('checked')) { $this['hide'](); } } doExport(); that.getRowsHidden(true); }
//1 if (pageInfo == undefined) { var pageInfo = { pageNumber: 1, pageSize: 13 }; } //2 onPageChange: function(page, size) { var pageInfo = { pageNumber: page, pageSize: size }; window.sessionStorage.pageInfo = JSON.stringify(pageInfo); }, //3 var pageInfo = window.sessionStorage .getItem("pageInfo"); pageInfo = JSON.parse(pageInfo); loadUserList(pageInfo);