Bootstrap Table 数据绑定

Bootstrap-Table显示数据到表格的方式有两种,一种是客户端(client)模式,一种是服务器(server)模式。

  客户端模式:指的是在服务器中把要显示到表格的数据一次性加载出来,然后转换成JSON格式传到要显示的界面中,客户端模式较为简单,它是把数据一次性加载出来放到界面上,然后根据你设置的每页记录数,自动生成分页。当点击第二页时,会自动加载出数据,不会再向服务器发送请求。同时用户可以使用其自带的搜索功能,可以实现全数据搜索。对于数据量较少的时候,可以使用这个方法。

  服务器模式:指的是根据设定的每页记录数和当前要显示的页码,发送数据到服务器进行查询,然后再显示到表格中。该方法可以根据用户的需要动态的加载数据,节省了服务器的资源,但是不能使用其自带的全数据搜索功能。

Bootstrap-table是基于Boostrap开发的插件,因此使用的时候,需要引入Bootstrap的脚本和样式。

如果我们项目中没有引入相关的文件,则需要引入这些样式和脚本文件,如下所示。

1
2
3
<link rel="stylesheet" href="bootstrap.min.css">
<script src="jquery.min.js"></script>
<script src="bootstrap.min.js"></script>

然后是Bootstrap-table的依赖引用:

CSS文件引入

1
<link rel="stylesheet" href="bootstrap-table.css">

脚本文件引入

1
2
3
<script src="bootstrap-table.js"></script>
<--汉化文件,放在 bootstrap-table.js 后面-->
<script src="bootstrap-table-zh-CN.js"></script>

bootstrap-table在页面中的使用,可以分为两种,一种是纯粹用HTML5的写法,通过data-*的方式指定各种属性设置,一种是HTML+JS方式实现弹性设置。

如果我们采用HTML5标识的方式初始化HTML代码,则是下面的代码。

1
2
3
4
5
6
7
8
9
10

<table data-toggle="table" data-url="data1.json">
<thead>
<tr>
<th data-field="id">Item ID</th>
<th data-field="name">Item Name</th>
<th data-field="price">Item Price</th>
</tr>
</thead>
</table>

如果我们采用JS代码方式来初始化表格插件,那么只需要在HTML上声明一个表格对象即可,如下代码。

1
<table id="table"></table>

js代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
$('#table').bootstrapTable({
url: 'data1.json',
columns: [{
field: 'id',
title: 'Item ID'
}, {
field: 'name',
title: 'Item Name'
}, {
field: 'price',
title: 'Item Price'
}, ]
});

ajax data-ajax Function undefined 自定义 AJAX 方法,须实现 jQuery AJAX API
method data-method String ‘get’ 服务器数据的请求方式 ‘get’ or ‘post’
url data-url String undefined 服务器数据的加载地址

Bootstrap Table做数据绑定时,可以直接设置url请求后台数据,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
(function() {
$('#tablelist').bootstrapTable({
url: "${ctxAdmin}/user/userData?orgId=${orgId}",
search: true, //是否显示搜索框功能
pagination: true, //是否分页
showRefresh: true, //是否显示刷新功能
showToggle: true,
showColumns: true,
iconSize: 'outline',
// toolbar: '#exampleTableEventsToolbar', 可以在table上方显示的一条工具栏,
icons: {
refresh: 'glyphicon-repeat',
toggle: 'glyphicon-list-alt',
columns: 'glyphicon-list'
}
});

也可通过ajax加载数据。本文通过ajax加载数据的方式如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
doSearch: function () {
var params={};
params.start=1;
params.limit=20;
// MP.doAction()函数为封装的ajax请求后台数据的函数,数据从后台请求成功后,通过load函数,加载数据。
MP.doAction("base-car-query", params, function (datas) {
if(datas.success)
{ //数据绑定 ,datas为json格式的数据
$("#tb_departments").bootstrapTable('load', datas);
}
}, function(datas){
alert("数据加载失败");
}, true, true);
}

data-formatter 和 data-events

要实现如下效果,用上面两个option配合使用即可,一个定义格式,一个定义点击的操作。

直接上js代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//value: 所在collumn的当前显示值,
//row:整个行的数据 ,对象化,可通过.获取
//表格-操作 - 格式化
function actionFormatter(value, row, index) {
return '<a class="mod" >修改</a> ' + '<a class="delete">删除</a>';
}
//表格 - 操作 - 事件
window.actionEvents = {
'click .mod': function(e, value, row, index) {
//修改操作
},
'click .delete' : function(e, value, row, index) {
//删除操作
}
}