bootstrap-table表格插件
bootstrap-table表格插件
Document
</table>
</div>
<!-- 1.bootstrap-table表格插件 纯js格式化写法 -->
<script>
//初始化bootstrap-table的内容
function InitMainTable () {
//记录页面bootstrap-table全局变量$table,方便应用
$('#tableData').bootstrapTable({
url: url, //请求后台的URL(*)
method: 'POST', //请求方式(*) get请求时需要更改此处
//toolbar: '#toolbar', //工具按钮用哪个容器
striped: true, //是否显示行间隔色
cache: false, //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
pagination: true, //是否显示分页(*)
sortable: true, //是否启用排序
sortOrder: "asc", //排序方式
sidePagination: "server", //分页方式:client客户端分页,server服务端分页(*)
pageNumber: 1, //初始化加载第一页,默认第一页,并记录
pageSize: rows, //每页的记录行数(*)
pageList: [10, 25, 50, 100], //可供选择的每页的行数(*)
search: false, //是否显示表格搜索
strictSearch: true,
showColumns: true, //是否显示所有的列(选择显示的列)
showRefresh: true, //是否显示刷新按钮
minimumCountColumns: 2, //最少允许的列数
clickToSelect: true, //是否启用点击选中行
//height: 500, //行高,如果没有设置height属性,表格自动根据记录条数觉得表格高度
uniqueId: "ID", //每一行的唯一标识,一般为主键列
showToggle: true, //是否显示详细视图和列表视图的切换按钮
cardView: false, //是否显示详细视图
detailView: false, //是否显示父子表
//得到查询的参数
queryParams : function (params) {
//这里的键的名字和控制器的变量名必须一致,这边改动,控制器也需要改成一样的
var temp = {
rows: params.limit, //页面大小
page: (params.offset / params.limit) + 1, //页码
sort: params.sort, //排序列名
sortOrder: params.order //排位命令(desc,asc)
};
return temp;
},
//由于bootstrap-table展示数据时,有自己的数据格式要求,因此可以利用下面这个方法格式化自己的后台数据
responseHandler:function(res){ //res 后台给你返回的数据
return{
rows:res.data, //表格中需要展示的数据
total:res.total //分页时后台返回总数据条数
}
},
// 表格列名--field必须和后台返回的字段名一致,title--表格的实际展示的列名
columns: [{
checkbox: true,
visible: true //是否显示复选框
}, {
field: 'Name',
title: '姓名',
sortable: true
}, {
field: 'age',
title: '年龄',
sortable: true
}, {
field: 'BirthDate',
title: '出生日期',
formatter: dateFormatter //可以根据自己的需求格式化操作
}, {
field:'ID',
title: '操作',
width: 120,
align: 'center',
valign: 'middle',
formatter: actionFormatter //可以根据自己的需求格式化数据,操作
}, ],
onLoadSuccess: function () {
console.log("数据加载车成功")
},
onLoadError: function () {
console.log("数据加载失败!");
},
//双击表格行的事件(可以参考bootstrap-table官网的事件)
onDblClickRow: function (row, $element) {
//row 当前点击行的所有数据集合
},
});
};
function dateFormatter(){
//可以根据自己的需求格式化数据
}
</script>
<!-- 2.在页面HTML中实现列的展示 -->
<div>
<table id="tableData" data-toggle="table" data-url="/index">
<thead>
<th data-field="" checkbox=true>多选框</th>
<th data-field="id"></th>
<th data-field="name">姓名</th>
<th data-field="age">年龄</th>
<th data-field="BirthDate">出生日期</th>
</thead>
</table>
</div>
<!-- 2.js同上面纯js格式化,只需要去掉columns中的内容,当然一些属性也可以在HTML中直接实现,
不过我还是喜欢写在js中,这样html看起来比较简洁
-->
bootstrap-table表格自己遇到的一些问题的解决方法
1.bootstrap-table中关于客户端分页的
客户端分页时,只需要添加sidePagination: “client”, slient:true属性,其他设置和服务端分页相同(只不过传参时不需要pageSize和PageNumber属性);
客户端分页:一次性从后台请求所有的数据,由前台进行分页及搜索功能,而不需要再次请求服务器
优点:简单,方便
缺点:当数据过多时,对整个项目的性能造成影响
2.bootstrap-table获取数据事件
利用bootstrap-table中的getData()事件想要获取所有的表格数据(不仅仅只是当前分页展示的数据时),分页必须采用客户端分页。如果是服务器端分页,获取的仅仅是当前分页展示的数据内容。
3.bootstrap-table中getOptions()方法获取次插件中所有的选项(属性)。
4.bootstrap-table中具有很强大的打印功能
扩展名-----打印
5.bootstrap-table使用选中/取消选中时,如果是弹框上的事件,必须先关闭弹框后,才能获取到当前选中的数据内容,否则获取不到(根本原因是不能跨页面传递数据–dom渲染问题)。
6.bootstrap-table中的get和post 请求使用方法一致,仅仅是将请求方式修改get<------->post
但若为get请求,请求主体为Query String Parameters,并且请求主体中会默认传递一个时间参数:_:电脑主机当前时间的毫秒数。
7.bootstrap-table中,如果想要隐藏或者显示某一列(即根据内容动态的更新表格需要展示哪些列时),获取dom元素的隐藏显示可以写在创建表格成功后的方法中及时进行更新(onLoadSuccess方法中)。
只是自己在使用bootstrap-table插件时的一些体会,请大家多多指教。
