轉載於:https://www.cnblogs.com/yiliangmi/p/10518176.html
bootstrap table使用及遇到的問題
本人前端菜鳥一枚,最近使用bootstrap table實現表格,記錄一下以便日后翻閱,廢話不多說,先看效果圖:

1、首先說下要實現該效果需要添加的css樣式及所需的js文件,具體下載地址就不粘貼了(因為太懶)
<link rel="stylesheet" href="css/bootstrap.min.css"> <link rel="stylesheet" href="css/bootstrap-table.min.css"> <script src="js/jquery-2.1.4.min.js"></script> <script src="js/bootstrap.min.js"></script> <script src="js/bootstrap-table.min.js"></script> <script src="js/bootstrap-table-zh-CN.js"></script>
2、html頁面中需要准備的元素如下:
<div class="container">
<!--存放工具欄-->
<div id="toolbar"></div>
<!--存放生成的表格-->
<table id="searchResults" class="table table-hover">
</table>
</div>
3、萬事俱備只欠東風,東風就是數據問題,這里有一點需要注明,客戶端(client)的數據和服務端(server)的數據格式略有差異,這里展示出來以供參考(本人使用的是客戶端的數據)。
客戶端數據格式(clientJson.json):
[
{
"id": 0,
"name": "李雷",
"sex": "男",
"age": "12",
"cls": "一年級",
"score": "81",
"action": "操作"
},
{
"id": 1,
"name": "韓梅梅",
"sex": "女",
"age": "11",
"cls": "一年級",
"score": "90",
"action": "操作"
}
]
服務端數據格式(serverJson.json):
{
"total": 2,
"rows": [
{
"id": 0,
"name": "李雷",
"sex": "男",
"age": "12",
"cls": "一年級",
"score": "81"
},
{
"id": 1,
"name": "韓梅梅",
"sex": "女",
"age": "11",
"cls": "一年級",
"score": "90"
}
]
}
4、所有的css、js、頁面元素及數據都已經准備完畢,那么該如何生成表格呢?請看下面代碼及注釋,部分模塊的顯示效果已經在文章開頭的圖片中顯示出來,請看官對號入座。
function createTab() {
$('#searchResults').bootstrapTable('destroy').bootstrapTable({
url: 'json/clientJson.json',
/*data : data,*/
toolbar: '#toolbar', //工具按鈕用哪個容器
method: 'get', //請求方式
striped: true, //是否顯示行間隔色
// cache: false, //是否使用緩存
toolbarAlign: "right", //工具欄對齊方式
sidePagination: "client", //分頁方式:client客戶端分頁,server服務端分頁
search: true,//是否顯示表格搜索,此搜索是客戶端搜索,不會進服務端
uniqueId: "id",
pageNumber: 1, //初始化加載第一頁
pageSize: 1, //每頁的記錄行數
pageList: [1, 2, 3], //可供選擇的每頁的行數
pagination: true, // 是否分頁
sortable: true, // 是否啟用排序
sortOrder: "asc", //排序方式
showColumns: true, //是否顯示列選擇按鈕
showRefresh: true, //是否顯示刷新按鈕
clickToSelect: true, //是否啟用點擊選中行
// height: 500, //行高
showToggle: true, //是否顯示詳細視圖和列表視圖的切換按鈕
cardView: false, //是否顯示詳細視圖
detailView: false, //是否顯示父子表
queryParamsType: '',//設置請求參數格式
queryParams: function queryParams(params) { //設自定義查詢參數
/*請求遠程數據時,您可以通過修改queryParams來發送其他參數。
如果queryParamsType = 'limit',params對象包含:limit,offset,search,sort,order。
否則,它包含:pageSize,pageNumber,searchText,sortName,sortOrder。
返回false停止請求。
默認: function(params) { return params }*/
return params;
},
columns: [
{
title: "全選",
field: "select",
checkbox: true,
width: 20, //寬度
align: "center", //水平
valign: "middle" //垂直
},
{
field: 'no',
title: '序號',
align: "center",
formatter: function (value, row, index) {
return index + 1;
}
}
,
{
field: 'name',
title: '名字',
align: 'center',
valign: 'middle'
},
{
field: 'sex',
title: '性別',
align: 'center',
valign: 'middle'
},
{
field: 'age',
title: '年齡',
align: 'center',
valign: 'middle'
},
{
field: 'cls',
title: '年級',
align: 'center',
valign: 'middle',
},
{
field: 'score',
title: '分數',
align: 'center',
valign: 'middle',
},
{
field: 'id',
title: '操作',
width: 120,
align: 'center',
valign: 'middle',
formatter: actionFormatter
}
]
});
}
//操作欄的格式化
function actionFormatter(value, row, index) {
var id = row.id;
var result = "";
result += "<button style='cursor: pointer' class='btn btn-primary' title='修改' onclick=''>修改</button>";
return result;
}
4、ok,現在表格已經展示出來了,過程很簡單,但是我剛開始做的時候碰見一個問題: Syntax error, unrecognized expression,如下圖所示。wfk?搗鼓半天終於發現,是jquery的版本問題,1.9的版本顯然不好使,於是換成2.1的版本,終於大功告成。

5、最后,雙手送上完整代碼:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>表格及下載</title>
<link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="stylesheet" href="css/bootstrap-table.min.css">
<!--<script src="js/jquery-2.1.4.min.js"></script>-->
<script src="js/jquery-1.9.1.min.js"></script>
<script src="js/bootstrap.min.js"></script>
<script src="js/bootstrap-table.min.js"></script>
<script src="js/bootstrap-table-zh-CN.js"></script>
</head>
<body>
<div class="container text-center">
<button name='createTab' id='creatTab' type="button"
class="btn btn-primary" onclick="createTab()">生成表格
</button>
</div>
<div class="container">
<!--存放工具欄-->
<div id="toolbar"></div>
<!--存放生成的表格-->
<table id="searchResults" class="table table-hover">
</table>
</div>
</body>
<script>
function createTab() {
$('#searchResults').bootstrapTable('destroy').bootstrapTable({
url: 'json/clientJson.json',
/*data : data,*/
toolbar: '#toolbar', //工具按鈕用哪個容器
method: 'get', //請求方式(*)
striped: true, //是否顯示行間隔色
// cache: false, //是否使用緩存
toolbarAlign: "right", //工具欄對齊方式
sidePagination: "client", //分頁方式:client客戶端分頁,server服務端分頁(*)
search: true,//是否顯示表格搜索,此搜索是客戶端搜索,不會進服務端
uniqueId: "id",
pageNumber: 1, //初始化加載第一頁
pageSize: 1, //每頁的記錄行數
pageList: [1, 2, 3], //可供選擇的每頁的行數
pagination: true, // 是否分頁
sortable: true, // 是否啟用排序
sortOrder: "asc", //排序方式
showColumns: true, //是否顯示列選擇按鈕
showRefresh: true, //是否顯示刷新按鈕
clickToSelect: true, //是否啟用點擊選中行
// height: 500, //行高
showToggle: true, //是否顯示詳細視圖和列表視圖的切換按鈕
cardView: false, //是否顯示詳細視圖
detailView: false, //是否顯示父子表
queryParamsType: '',//設置請求參數格式
queryParams: function queryParams(params) { //設自定義查詢參數
/*請求遠程數據時,您可以通過修改queryParams來發送其他參數。
如果queryParamsType = 'limit',params對象包含:limit,offset,search,sort,order。
否則,它包含:pageSize,pageNumber,searchText,sortName,sortOrder。
返回false停止請求。
默認: function(params) { return params }*/
return params;
},
columns: [
{
title: "全選",
field: "select",
checkbox: true,
width: 20, //寬度
align: "center", //水平
valign: "middle" //垂直
},
{
field: 'no',
title: '序號',
align: "center",
formatter: function (value, row, index) {
return index + 1;
}
}
,
{
field: 'name',
title: '名字',
align: 'center',
valign: 'middle'
},
{
field: 'sex',
title: '性別',
align: 'center',
valign: 'middle'
},
{
field: 'age',
title: '年齡',
align: 'center',
valign: 'middle'
},
{
field: 'cls',
title: '年級',
align: 'center',
valign: 'middle',
},
{
field: 'score',
title: '分數',
align: 'center',
valign: 'middle',
},
{
field: 'id',
title: '操作',
width: 120,
align: 'center',
valign: 'middle',
formatter: actionFormatter
}
]
});
}
//操作欄的格式化
function actionFormatter(value, row, index) {
var id = row.id;
var result = "";
result += "<button style='cursor: pointer' class='btn btn-primary' title='修改' onclick=''>修改</button>";
return result;
}
</script>
</html>

