设置高度为灵活高度
添加高度属性
height: $(window).height() * 0.68,
添加数据统计
分为两步:
第一步
showFooter: true,
第二步
footerFormatter: function (value) {
var count = 0;
for (var i in value){
count += parseFloat(value[i].hBorrow);
}
return xiaoshu(count);
}
不显示某些列
onLoadSuccess: function(){
if(type == 2){
$table.bootstrapTable('hideColumn', 'abstractName');
}
}
给每一行添加属性
rowAttributes: function (row, index) {
return {"data-acc": row.acc};
}
完整示例代码
$('#table').bootstrapTable({
// data:data,
idField: 'id',
dataType: 'jsonp',
height: $(window).height() * 0.68,//设置高度为页面的68%
showFooter: true,//设置启用统计功能
columns: [
{field: 'id', title: '科目代码', '150px',
footerFormatter: function (value) {
return "汇总";
}},
{field: 'subjectName', title: '科目名称',},
{field: 'dir1', title: '方向', '40px', align: 'center'},
{field: 'startBalance', title: '期初余额', align: 'right', '140px',
footerFormatter: function (value) {
var count = 0;
for (var i in value){
count += parseFloat(value[i].startBalance);
}
return xiaoshu(count);
}},
{field: 'hBorrow', title: '借方发生', align: 'right', '140px',
footerFormatter: function (value) {
var count = 0;
for (var i in value){
count += parseFloat(value[i].hBorrow);
}
return xiaoshu(count);
}},
{field: 'hLoad', title: '贷方发生', align: 'right', '140px',
footerFormatter: function (value) {
var count = 0;
for (var i in value){
count += parseFloat(value[i].hLoad);
}
return xiaoshu(count);
}}
],
showHeader: true,
onPreBody: function (data) {
if (data.length > 0){
for (var i in data) {
data[i].startBalance = xiaoshu(data[i].startBalance);
data[i].hBorrow = xiaoshu(data[i].hBorrow);
data[i].hLoad = xiaoshu(data[i].hLoad);
}
}
},
//在哪一列展开树形
treeShowField: 'id',
//指定父id列
parentIdField: 'pid',
onResetView: function (data) {
$table.treegrid({
initialState: 'collapsed',// 所有节点都折叠
treeColumn: 0,
onChange: function () {
$table.bootstrapTable('resetWidth');
}
});
},
rowStyle: function (row, index) {
return {classes: 'setli'};
},
//给每一行添加属性
rowAttributes: function (row, index) {
return {"data-acc": row.acc};
}
});
使用onProBody()方法修改从服务器端拉取的数据
onProBody()方法可以在表格渲染之前触发,于是可以在这里更改表格的数据
但是 onProBody()方法被运行了两次,
如下例:
function printTable(insertRow) {
$table.bootstrapTable({
method: "POST",
cache: false,
url: ctx + "/admin/cashierManager/getCashierDataList",
contentType: "application/x-www-form-urlencoded",
pageSize: 5,
pageNumber: 1,
pageList: [5, 10, 20],
dataSidePagination: "server",
sidePagination: "server",
dataType: 'json',
pagination: true, //分页
paginationLoop: false,
showPaginationSwitch: false,
paginationPreText: '上一页',
paginationNextText: '下一页',
responseHandler: function (res) {
return {
"rows": res.content,
"total": res.totalElements
};
},
columns: [
{field: 'code', title: '单据号', '100px', align: 'center',},
{field: 'time', title: '日期', '100px', align: 'center',},
{field: 'type', title: '单据类型', '100px', align: 'center',},
{field: 'abstractName', title: '摘要', align: 'center',},
{field: 'borrow', title: '借方', '130px', align: 'right',},
{field: 'loan', title: '贷方', '130px', align: 'right',},
{field: 'endBalance', title: '余额', '130px', align: 'right',},
],
onPreBody: function (data) {
console.log(data); // 1
if (data.length > 0){
// console.log(data);
var balance = accAdd(insertRow.endBalance, 0);
var insertRowBalance = accAdd(data[0].endBalance, balance);
for (var i in data) {
if (i == 0){
balance = balance + data[i].endBalance;
}
balance = balance + data[i].borrow - data[i].loan;
data[i].endBalance = balance;
}
//如果是第一页,要在行首加一条数据
if (this.pageNumber == 1) {
newRow = $.extend(true, insertRow.type, insertRow);
newRow.endBalance = insertRowBalance;
data.unshift(newRow);
}
}
}
});
}
在onProBody()方法中使用console.log()方法打印
会打印两次data,data是一个列表
第一次打印一个空列表
第二次打印从后端返回的数据
然后下面的操作data时,由于data为空,会报data[0].endBalance不存在的错
解决办法:
添加判断
if (data.length > 0){
}
解决bootstrapTable的load方法不可用的问题
迁移系统后使用bootstrapTable的load方法加载数据
$table.bootstrapTable('load',data);
方法无效;(确认可以查询到数据且打印在前端但是没有渲染到bootstrap table上)
解决办法:
table.bootstrapTable('removeAll');
table.bootstrapTable('append',data.data);
使用先清空再添加的方法解决该问题。