原文地址:https://blog.csdn.net/javayoucome/article/details/80081771
1.介紹
Bootstrap Table介紹見官網:http://bootstrap-table.wenzhixin.net.cn/zh-cn/
Bootstrap 中文網:http://www.bootcss.com/
Bootstrap Table Demo:http://issues.wenzhixin.net.cn/bootstrap-table/index.html
Bootstrap Table API:http://bootstrap-table.wenzhixin.net.cn/zh-cn/documentation/
Bootstrap Table源碼:https://github.com/wenzhixin/bootstrap-table
Boostrap Table 擴展API:http://bootstrap-table.wenzhixin.net.cn/extensions/
2.頁面引用
為了方便bootstrap及bootstrap-table用官方推薦引用方式,想自己下載源碼可以自行下載.
導出Excel所需額外的4個js可從以下2個地址找到那4個文件,不需要導出的可以無視.
下載地址 https://github.com/wenzhixin/bootstrap-table/tree/master/src/extensions/export
https://github.com/hhurz/tableExport.jquery.plugin
-
<!-- 引入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及bootstrapjs -->
-
<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>
-
<!-- bootstrap-table-export數據導出---后面兩個是Excel2007所需要的js -->
-
<script src="${basePath }/js/bootstrap-table-export.js"></script>
-
<script src="${basePath }/js/tableExport.min.js"></script>
-
<script src="${basePath }/js/xlsx.core.min.js"></script>
-
<script src="${basePath }/js/FileSaver.min.js"></script>
3.簡單示例
3.1在html中定義一個table標簽
<table id="table"></table>
3.2使用bootstrap-table有兩種方式,第一種是:通過data屬性的方法--因為不靈活不做過多演示.類似
-
<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>
3.3使用JavaScript方式,幾乎所有使用bootstrap-table的全是以這種方式,學習bootstrap-table,就是學習它的API,介紹基本常用的API,詳情請查看官方文檔或看這個博主翻譯的
https://blog.csdn.net/rickiyeat/article/details/56483577
頁面引入以下js
-
$( "#table").bootstrapTable({ // 對應table標簽的id
-
url: base_path + "/product/list", //AJAX獲取表格數據的url
-
striped: true, //是否顯示行間隔色(斑馬線)
-
pagination: true, //是否顯示分頁(*)
-
sidePagination: "server", //分頁方式:client客戶端分頁,server服務端分頁(*)
-
paginationLoop: false, //當前頁是邊界時是否可以繼續按
-
queryParams: function (params) { // 請求服務器數據時發送的參數,可以在這里添加額外的查詢參數,返回false則終止請求
-
return {
-
limit: params.limit, // 每頁要顯示的數據條數
-
offset: params.offset, // 每頁顯示數據的開始行號
-
//sort: params.sort, // 要排序的字段
-
//sortOrder: params.order, // 排序規則
-
//dataId: $("#dataId").val() // 額外添加的參數
-
}
-
}, //傳遞參數(*)
-
pageNumber: 1, //初始化加載第一頁,默認第一頁
-
pageSize: 10, //每頁的記錄行數(*)
-
pageList: [ 10, 25, 50, 100,'all'], //可供選擇的每頁的行數(*)
-
contentType: "application/x-www-form-urlencoded",//一種編碼。在post請求的時候需要用到。這里用的get請求,注釋掉這句話也能拿到數據
-
//search: true, //是否顯示表格搜索,此搜索是客戶端搜索,不會進服務端,所以,個人感覺意義不大
-
strictSearch: false, //是否全局匹配,false模糊匹配
-
showColumns: true, //是否顯示所有的列
-
showRefresh: true, //是否顯示刷新按鈕
-
minimumCountColumns: 2, //最少允許的列數
-
clickToSelect: false, //是否啟用點擊選中行
-
//height: 500, //行高,如果沒有設置height屬性,表格自動根據記錄條數覺得表格高度
-
//uniqueId: "id", //每一行的唯一標識,一般為主鍵列
-
showToggle: true, //是否顯示詳細視圖和列表視圖的切換按鈕
-
cardView: false, //是否顯示詳細視圖
-
detailView: false, //是否顯示父子表
-
cache: false, // 設置為 false 禁用 AJAX 數據緩存, 默認為true
-
sortable: true, //是否啟用排序
-
sortOrder: "asc", //排序方式
-
sortName: 'sn', // 要排序的字段
-
columns: [
-
{
-
field: 'sn', // 返回json數據中的name
-
title: '訂貨號', // 表格表頭顯示文字
-
align: 'center', // 左右居中
-
valign: 'middle' // 上下居中
-
}, {
-
field: 'productname',
-
title: '商品名稱',
-
align: 'center',
-
valign: 'middle'
-
}, {
-
field: 'cost',
-
title: '價格(¥)',
-
align: 'center',
-
valign: 'middle',
-
sortable:true
-
}, {
-
field: 'brankname',
-
title: '品牌',
-
align: 'center',
-
valign: 'middle',
-
}, {
-
field: 'specificationvalues',
-
title: '規格',
-
align: 'center',
-
valign: 'middle',
-
}, {
-
field: 'areaname',
-
title: '產地',
-
align: 'center',
-
valign: 'middle',
-
}
-
],
-
onLoadSuccess: function(){ //加載成功時執行
-
console.info("加載成功");
-
},
-
onLoadError: function(){ //加載失敗時執行
-
console.info("加載數據失敗");
-
},
-
-
//>>>>>>>>>>>>>>導出excel表格設置
-
showExport: phoneOrPc(), //是否顯示導出按鈕(此方法是自己寫的目的是判斷終端是電腦還是手機,電腦則返回true,手機返回falsee,手機不顯示按鈕)
-
exportDataType: "basic", //basic', 'all', 'selected'.
-
exportTypes:[ 'excel','xlsx'], //導出類型
-
//exportButton: $('#btn_export'), //為按鈕btn_export 綁定導出事件 自定義導出按鈕(可以不用)
-
exportOptions:{
-
//ignoreColumn: [0,0], //忽略某一列的索引
-
fileName: '數據導出', //文件名稱設置
-
worksheetName: 'Sheet1', //表格工作區名稱
-
tableName: '商品數據表',
-
excelstyles: ['background-color', 'color', 'font-size', 'font-weight'],
-
//onMsoNumberFormat: DoOnMsoNumberFormat
-
}
-
//導出excel表格設置<<<<<<<<<<<<<<<<
-
-
});
-
/*判斷終端是手機還是電腦--用於判斷文件是否導出(電腦需要導出)*/
-
function phoneOrPc(){
-
var sUserAgent = navigator.userAgent.toLowerCase();
-
var bIsIpad = sUserAgent.match(/ipad/i) == "ipad";
-
var bIsIphoneOs = sUserAgent.match(/iphone os/i) == "iphone os";
-
var bIsMidp = sUserAgent.match(/midp/i) == "midp";
-
var bIsUc7 = sUserAgent.match(/rv:1.2.3.4/i) == "rv:1.2.3.4";
-
var bIsUc = sUserAgent.match(/ucweb/i) == "ucweb";
-
var bIsAndroid = sUserAgent.match(/android/i) == "android";
-
var bIsCE = sUserAgent.match(/windows ce/i) == "windows ce";
-
var bIsWM = sUserAgent.match(/windows mobile/i) == "windows mobile";
-
if (bIsIpad || bIsIphoneOs || bIsMidp || bIsUc7 || bIsUc || bIsAndroid || bIsCE || bIsWM) {
-
return false;
-
} else {
-
return true;
-
}
-
}
需要注意的項
1.交易測試時分頁先選擇'client',因為分頁是客戶端的話,導出數據會方便可以隨意定義'basic', 'all', 'selected'.如果分頁是服務端的話即使選擇'all導出的也是當前頁('basic'),如果想導出全部話,可以先將頁面顯示條目數為全部,再導出當前頁即就是全部數據了.
2.分頁如果是服務端的話返回的json串必須包含2個數據,一個是"total"即所有數據條數.另一個"rows"即"當前頁"顯示的內容.(見下圖json串格式)

后台參考代碼(以服務端分頁為例,如果客戶端分頁先把方法參數去掉,再把for循環改成循環100次,后直接返回list即可)
-
-
-
public class TestController {
-
-
-
-
public Map<String,Object> listProduct(@RequestParam(value = "limit", required = false)Integer limit, @RequestParam(value = "offset", required = false)Integer offset) {
-
Map<String,Object> map = new HashMap<>();
-
-
List<SkuExt> list = new ArrayList<SkuExt>();//此處應該是從數據庫查出來的數據,為了測試方便寫個循環
-
for (int i = offset; i < limit+offset; i++) {
-
SkuExt skuExt = new SkuExt();
-
skuExt.setSn(i+ "");
-
skuExt.setProductname( "商品名稱"+i);
-
skuExt.setCost( new BigDecimal(i*100));
-
skuExt.setBrankname( "品牌名稱"+i);
-
skuExt.setSpecificationvalues( "規格值是"+i);
-
skuExt.setAreaname( "產地"+i);
-
list.add(skuExt);
-
}
-
map.put( "total", 100);//假設共有100條數據
-
map.put( "rows", list);
-
return map;
-
}
--------------------------------------以上就是代碼,效果如下------------------------------------------

showToggle:true這個屬性的效果如下:

導出按鈕效果如下:導出的按鈕和下拉提示應該不是這樣,是我自己改了里面內容文字,很好實現.

以上,純手寫,大神勿噴.
