前端表格外掛 BootstrapTable 入門教程
阿新 • • 發佈:2018-12-27
官網介紹:
基於 Bootstrap 的 jQuery 表格外掛,通過簡單的設定,就可以擁有強大的單選、多選、排序、分頁,以及編輯、匯出、過濾(擴充套件)等等的功能。
主要功能
- 支援 Bootstrap 3 和 Bootstrap 2
- 自適應介面
- 固定表頭
- 非常豐富的配置引數
- 直接通過標籤使用
- 顯示/隱藏列
- 顯示/隱藏表頭
- 通過 AJAX 獲取 JSON 格式的資料
- 支援排序
- 格式化表格
- 支援單選或者多選
- 強大的分頁功能
- 支援卡片檢視
- 支援多語言
- 支援外掛
優點
- 學習成本較低,配置簡單,文件齊全
- 跟Bootstrap無縫銜接,整體風格一致,也便於二次開發
- 開發者活躍,Github定期維護
開始使用
- 1、在網頁的head標籤裡插入下面的程式碼
<!-- 引入bootstrap樣式 -->
<link href="https://cdn.bootcss.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet">
<!-- 引入bootstrap-table樣式 -->
<link href="https://cdn.bootcss.com/bootstrap-table/1.11.1/bootstrap-table.min.css" rel="stylesheet">
<!-- jquery -->
<script src="https://cdn.bootcss.com/jquery/2.2.3/jquery.min.js"></script>
<script src="https://cdn.bootcss.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<!-- bootstrap-table.min.js -->
<script src="https://cdn.bootcss.com/bootstrap-table/1.11.1/bootstrap-table.min.js"></script >
<!-- 引入中文語言包 -->
<script src="https://cdn.bootcss.com/bootstrap-table/1.11.1/locale/bootstrap-table-zh-CN.min.js"></script>
- 2、在頁面body程式碼塊裡定義表格展示的區域
<table id="table"></table>
- 3、使用data屬性來渲染表格 (簡單方式)
<table data-toggle="table" data-url="data1.json">
<thead>
<tr>
<th data-field="id">序號</th>
<th data-field="name">名稱</th>
<th data-field="price">價格</th>
</tr>
</thead>
</table>
- 4、編寫JavaScript程式碼渲染表格 (推薦使用這種方式,程式碼閱讀和擴充套件更為方便)
在網頁程式碼最下面插入js指令碼,內容如下:
$("#table").bootstrapTable({ // 對應table標籤的id
url: "<%=request.getContextPath()%>/api/getDataList.do", // 獲取表格資料的url
cache: false, // 設定為 false 禁用 AJAX 資料快取, 預設為true
striped: true, //表格顯示條紋,預設為false
pagination: true, // 在表格底部顯示分頁元件,預設false
pageList: [10, 20], // 設定頁面可以顯示的資料條數
pageSize: 10, // 頁面資料條數
pageNumber: 1, // 首頁頁碼
sidePagination: 'server', // 設定為伺服器端分頁
queryParams: function (params) { // 請求伺服器資料時傳送的引數,可以在這裡新增額外的查詢引數,返回false則終止請求
return {
pageSize: params.limit, // 每頁要顯示的資料條數
offset: params.offset, // 每頁顯示資料的開始行號
sort: params.sort, // 要排序的欄位
sortOrder: params.order, // 排序規則
dataId: $("#dataId").val() // 額外新增的引數
}
},
sortName: 'id', // 要排序的欄位
sortOrder: 'desc', // 排序規則
columns: [
{
checkbox: true, // 顯示一個勾選框
align: 'center' // 居中顯示
}, {
field: 'code', // 返回json資料中的name
title: '編號', // 表格表頭顯示文字
align: 'center', // 左右居中
valign: 'middle' // 上下居中
}, {
field: 'name',
title: '名稱',
align: 'center',
valign: 'middle'
}, {
field: 'calcMode',
title: '計算方式',
align: 'center',
valign: 'middle',
formatter: function (value, row, index){ // 單元格格式化函式
var text = '-';
if (value == 1) {
text = "方式一";
} else if (value == 2) {
text = "方式二";
} else if (value == 3) {
text = "方式三";
} else if (value == 4) {
text = "方式四";
}
return text;
}
}, {
title: "操作",
align: 'center',
valign: 'middle',
width: 160, // 定義列的寬度,單位為畫素px
formatter: function (value, row, index) {
return '<button class="btn btn-primary btn-sm" onclick="del(\'' + row.stdId + '\')">刪除</button>';
}
}
],
onLoadSuccess: function(){ //載入成功時執行
console.info("載入成功");
},
onLoadError: function(){ //載入失敗時執行
console.info("載入資料失敗");
}
})
元件文件
一、表格引數
使用方式如下:
$("#table").bootstrapTable({
method: "post",
url: "獲取後臺資料的url",
... ...
});
名稱 | 標籤 | 型別 | 預設 | 描述 |
---|---|---|---|---|
method | data-method | String | ‘get’ | 伺服器資料的請求方式 ‘get’ or ‘post’ |
url | data-url | String | undefined | 伺服器資料的載入地址 |
undefinedText | data-undefined-text | String | ‘-‘ | 當資料為 undefined 時顯示的字元 |
striped | data-striped | Boolean | false | 設定為 true 會有隔行變色效果 |
columns | - | Array | [] | 列配置項,詳情請檢視 列引數 表格. |
data | - | Array | [] | 載入json格式的資料 |
cache | data-cache | Boolean | true | 設定為 false 禁用 AJAX 資料快取 |
dataType | data-data-type | String | ‘json’ | 伺服器返回的資料型別 |
queryParams | data-query-params | Function | function(params) { return params; } |
請求伺服器資料時,你可以通過重寫引數的方式新增一些額外的引數, 例如 toolbar 中的引數 如果 queryParamsType = ‘limit’ ,返回引數必須包含 limit, offset, search, sort, order 否則, 需要包含: pageSize, pageNumber, searchText, sortName, sortOrder. 返回false將會終止請求 |
pagination | data-pagination | Boolean | false | 設定為 true 會在表格底部顯示分頁條 |
paginationLoop | data-pagination-loop | Boolean | true | 設定為 true 啟用分頁條無限迴圈的功能。 |
sidePagination | data-side-pagination | String | ‘client’ | 設定在哪裡進行分頁,可選值為 ‘client’ 或者 ‘server’。設定 ‘server’時,必須設定 伺服器資料地址(url)或者重寫ajax方法 |
pageNumber | data-page-number | Number | 1 | 如果設定了分頁,首頁頁碼 |
pageSize | data-page-size | Number | 10 | 如果設定了分頁,頁面資料條數 |
pageList | data-page-list | Array | [10, 25, 50, 100, All] | 如果設定了分頁,設定可供選擇的頁面資料條數。設定為All 則顯示所有記錄。 |
search | data-search | Boolean | false | 是否啟用搜索框 |
searchOnEnterKey | data-search-on-enter-key | Boolean | false | 設定為 true時,按回車觸發搜尋方法,否則自動觸發搜尋方法 |
showRefresh | data-show-refresh | Boolean | false | 是否顯示 重新整理按鈕 |
clickToSelect | data-click-to-select | Boolean | false | 設定true 將在點選行時,自動選擇rediobox 和 checkbox |
singleSelect | data-single-select | Boolean | false | 設定True 將禁止多選 |
二、列引數
針對具體每一列展示的設定引數,最常用的為 title 和 field, 它們分別設定了表頭顯示文字和對應要顯示的每項資料
示例程式碼:
$("#table").bootstrapTable({
method: "post",
url: "獲取後臺資料的url",
columns: [
{
checkbox: true
}, {
title: '標準編號'
field: 'stdCode'
},
... ...
]
});
名稱 | 標籤 | 型別 | 預設 | 描述 |
---|---|---|---|---|
title | data-title | String | undefined | 表頭要顯示的文字 |
field | data-field | String | undefined | 要顯示資料的欄位名稱,可以理解為json物件裡的key |
checkbox | data-checkbox | Boolean | false | 設定為True的時候 則顯示一列checkbox元件,該列的寬度為固定寬度 |
radio | data-radio | Boolean | false | 設定為True的時候 則顯示一列radio元件,該列的寬度為固定寬度 |
align | data-align | String | undefined | 設定單元格資料的左右對齊方式, 可選擇的值有:’left’, ‘right’, ‘center’ |
valign | data-valign | String | undefined | 設定單元格資料的上下對齊方式, 可選擇的值有:’top’, ‘middle’, ‘bottom’ |
width | data-width | Number {Pixels or Percentage} | undefined | 設定列的寬度。如果沒有設定的話則根據表格內容自適應寬度。設定的話,可以使用’%’百分比的方式,也可以設定要顯示的畫素值, 如果設定畫素值的話可以不填’px’, 例如: width : 100 和 width : ‘100px’ ,效果是一樣的 |
visible | data-visible | Boolean | true | 顯示或隱藏該列, 預設顯示, False為隱藏 |
formatter | data-formatter | Function | undefined | 單元格格式化函式,有三個引數: value: 該列的欄位值; row: 這一行的資料物件; index: 行號,第幾行,從0開始計算 例子: formatter : function(value, row, index){ return value + row.id + index; } |
三、事件
給表格繫結事件,程式碼:
$("#table").bootstrapTable({
method: "post",
url: "獲取後臺資料的url",
onLoadSuccess: function(){ //載入成功時執行
console.info("載入成功");
},
onLoadError: function(){ //載入失敗時執行
console.info("載入資料失敗");
}
});
Option 事件 | jQuery 事件 | 引數 | 描述 |
---|---|---|---|
onLoadSuccess | load-success.bs.table | data | 請求載入遠端伺服器資料成功時的事件 |
onLoadError | load-error.bs.table | status | 請求載入遠端伺服器資料失敗時的事件 |
onClickRow | click-row.bs.table | row, field:點選列的 field 名稱。 |
|
onDblClickRow | dbl-click-row.bs.table | row, $element | 當用戶雙擊某一行的時候觸發,引數包括: row:點選行的資料, field:點選列的 field 名稱。 |
onClickCell | click-cell.bs.table | field, value, row, |
|
onDblClickCell | dbl-click-cell.bs.table | field, value, row, |