{ 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);