學習過程中,遇到的情況彙總,不定期更新
table字段自動排序失效
有時在table標籤中設置了 data-sortable="true"或者在js中設置了sortable: true,表格列的排序功能還是用不了。有些網友說要編寫後臺代碼,重新排序後在回傳,感覺應該這個插件沒這麼low。找了半天,找到了原因,只需要把分頁選項註釋掉,即data-side-pagination這個選項不添加即可。
數據格式問題
需要將數據庫返回數據轉換成json特定格式,才能被bootstrap table插件讀取。一般有兩種,推薦使用一種標準一點的json對象格式,必須要有total和rows兩個key,
{"total": 2,"rows": [{"id": 0,"name": "Item 0","price": "$0"},{"id": 1,"name": "Item 1","price": "$1"}]},
且鍵的名字必須與table設置columns的field值一樣,才能讀取到數據。
初始化時可以這麼寫
total = all_data.count()
rows = []
result = {"total":total,"rows":rows}
然後設定rows字典數組具體內容然後返回即可
各設置項含義
url: '/Home/GetDepartment', //請求後臺的URL(*),url也可以直接指定數據源,必須爲json格式
method: 'get', //請求方式(*)
toolbar: '#toolbar', //工具按鈕用哪個容器
striped: true, //是否顯示行間隔色
cache: false, //是否使用緩存,默認爲true,所以一般情況下需要設置一下這個屬性(*)
pagination: true, //是否顯示分頁(*)
sortable: false, //是否啓用排序
sortOrder: "asc", //排序方式
queryParams: oTableInit.queryParams,//傳遞參數(*)
sidePagination: "server", //分頁方式:client客戶端分頁,server服務端分頁(*)
pageNumber:1, //初始化加載第一頁,默認第一頁
pageSize: 10, //每頁的記錄行數(*)
pageList: [10, 25, 50, 100], //可供選擇的每頁的行數(*)
search: true, //是否顯示錶格搜索,此搜索是客戶端搜索,不會進服務端,所以,個人感覺意義不大
strictSearch: true,
showColumns: true, //是否顯示所有的列
showRefresh: true, //是否顯示刷新按鈕
minimumCountColumns: 2, //最少允許的列數
clickToSelect: true, //是否啓用點擊選中行
height: 500, //行高,如果沒有設置height屬性,表格自動根據記錄條數覺得表格高度
uniqueId: "ID", //每一行的唯一標識,一般爲主鍵列
showToggle:true, //是否顯示詳細視圖和列表視圖的切換按鈕
cardView: false, //是否顯示詳細視圖
detailView: false, //是否顯示父子表
載入數據
table的數據可以通過url指定,也可以在js代碼中載入,載入的數據需符合數據格式
$("#table").bootstrapTable('load',result_data);
語言設置
table默認是英文的,如需中文需要設置locale屬性爲zh-CN同時要導入相應的js文件,有分語言的js,但最好在html頁面的script裏導入一個全的語言文件包。bootstrap-table-locale-all.min.js。這樣可以隨時切換。該文件可以在官網上下,試了一下github上的單獨中文包,發現該文件打包錯誤,裏面是html代碼,也算官方的一個小bug