bootstrap Table的使用方法

阿龍丶along發表於2018-07-17

1.官網

  url:http://bootstrap-table.wenzhixin.net.cn/zh-cn/documentation/  文件包含了表格屬性、列屬性、事件、方法等等.

2.引入庫

  只要引入 jquery、bootstrap 、bootstrap-table的包,不用在js裡面定義就可以使用預設有寫data-toggle=”table”,data-toggle應該知道吧,常用的有”tooltip、popover等等”,這邊就不說了.

3.定義住表單

1 <!-- 主表單 -->
2     <table id="datatable"></table>
3 <!-- /主表單 -->

3.表格的增刪改查(功能很完整) 

  1 <!DOCTYPE HTML>
  2 <html xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity4">
  3 <head th:include="@{import} :: head"></head>
  4 <style type="text/css">
  5     #select-form{
  6         width: 100%;
  7         height: 50px;
  8         border: 1px #ddd solid;
  9         padding: 5px;
 10         min-width: 600px;
 11     }
 12     #select-form label{
 13         width: 250px;
 14         height: 40px;
 15         padding: 6px;
 16     }
 17     #select-form label input{
 18         width: 200px;
 19         height: 30px;
 20         outline: none;
 21         font-size: 12px;
 22         text-indent: 20px;
 23         font-weight: normal;
 24         border-radius: 3px;
 25         border: none;
 26         border: 1px #ddd solid;
 27     }
 28     #select-form button{
 29         outline: none;
 30         cursor: pointer;
 31     }
 32 </style>
 33 <body>
 34 
 35 <!-- nav -->
 36 <section th:include="@{import} :: nav"></section>
 37 
 38 <!-- container start -->
 39 <div class="wrapper">
 40 <div class="container-fluid" id="main-container">
 41     <div class="row">
 42         <!-- section of left menu -->
 43         <div class="col-md-1 col-sm-12" th:include="@{import} :: leftMenu"></div>
 44         <!-- /section of left menu -->
 45         
 46         <!-- section of main 主表單區域 -->
 47         <section class="col-md-11 col-sm-12 box">
 48             <!-- 用於顯示警告資訊 -->
 49             <div id="alert"></div>
 50             
 51             <!-- 表單按鈕 -->
 52             <div id="toolbar" class="btn-group btn-group-sm">
 53                 <button id="btn_add" type="button" class="btn btn-default">
 54                     <span class="glyphicon glyphicon-plus" aria-hidden="true"></span>新增
 55                 </button>
 56                 <button id="btn_edit" type="button" class="btn btn-default" disabled="true">
 57                     <span class="glyphicon glyphicon-pencil" aria-hidden="true"></span>修改
 58                 </button>
 59                 <button id="btn_delete" type="button" class="btn btn-default" disabled="true">
 60                     <span class="glyphicon glyphicon-remove" aria-hidden="true"></span>刪除
 61                 </button>
 62             </div>
 63             <!-- /表單按鈕 -->
 64             <!--搜尋框-->
 65             <div id="select-form">
 66                 <label class="control-label">
 67                     <span>名稱:</span><input type="text" class="select-name" placeholder="請輸入使用者名稱稱"/>
 68                 </label>
 69                 <label class="control-label">
 70                     <span>描述:</span><input type="text" class="select-description" placeholder="請輸入描述"/>
 71                 </label>
 72                 <button class="btn btn-default btn-sm btn-search bt">搜尋</button>
 73             </div>
 74             <!--/搜尋框-->
 75             <!-- 主表單 -->
 76             <table id="datatable"></table>
 77             <!-- /主表單 -->
 78 
 79             <!-- 新增/編輯 表單 -->
 80             <div class="modal fade" id="datatable-editor" tabindex="-1" role="dialog" aria-labelledby="datatable-editor">
 81                 <div class="modal-dialog" role="document">
 82                     <div class="modal-content">
 83                         <div class="modal-header">
 84                             <button type="button" class="close" data-dismiss="modal" aria-label="Close">
 85                                 <span aria-hidden="true">&times;</span>
 86                             </button>
 87                             <h4 class="modal-title" id="myModalLabel">編輯表單</h4>
 88                         </div>
 89                         <div class="modal-body">
 90                             <form class="form-horizontal" id="form">
 91                                 <input type="hidden" name="id" id="id" />
 92                                 <input type="hidden" name="_method" id="_method" />
 93                                 <div class="form-group">
 94                                     <label for="name" class="col-md-2 control-label">名稱</label>
 95                                     <div class="col-md-10">
 96                                         <input type="text" name="name" id="name" class="form-control" placeholder="名稱">
 97                                     </div>
 98                                 </div>
 99                                 <div class="form-group">
100                                     <label for="description" class="col-md-2 control-label">描述</label>
101                                     <div class="col-md-10">
102                                         <input type="text" name="description" id="description" class="form-control" placeholder="描述">
103                                     </div>
104                                 </div>
105                             </form>
106                         </div>
107                         <div class="modal-footer">
108                             <button type="button" id="btn-ok" class="btn btn-primary pt-close">儲存</button>
109                             <button type="button" id="btn-cancel" class="btn btn-default pt-close" data-dismiss="modal">取消</button>
110                         </div>
111                     </div>
112                 </div>
113             </div>
114             <!-- /新增/編輯 表單 -->
115             
116             <!-- 刪除確認 -->
117             <div class="modal fade" id="datatable-confirm" tabindex="-1" role="dialog" aria-labelledby="datatable-confirm">
118                 <div class="modal-dialog" role="document">
119                     <div class="modal-content">
120                         <div class="modal-header">
121                             <h4 class="modal-title">刪除確認</h4>
122                         </div>
123                         <div class="modal-body">
124                             <p>確認刪除以下資料,此操作不可恢復?</p>
125                             <ul class="list-group" id="delete-list"></ul>
126                         </div>
127                         <div class="modal-footer">
128                             <button type="button" id="btn-ok" class="btn btn-primary pt-close">確認</button>
129                             <button type="button" id="btn-cancel" class="btn btn-default pt-close" data-dismiss="modal">取消</button>
130                         </div>
131                     </div>
132                 </div>
133             </div>
134             <!-- /刪除確認 -->
135         </section>
136         <!-- /section of main -->
137     </div>
138 </div>
139 </div>
140 <!--/.container end-->
141 
142 <script th:inline="javascript">
143 $(document).ready(function() {
144     var tableEditor = $("#datatable-editor");
145     var URL = {
146         insert : {url : "/system/role/roles" , method : "POST"},
147         update : {url : "/system/role/roles" , method : "PUT"},
148         "delete" : {url : "/system/role/roles/batch" , method : "DELETE"}
149     }
150     
151     var getEditorInsert = function() {
152         tableEditor.find("#_method").val(URL.insert.method);
153         var url = URL.insert.url;
154         return {editor : tableEditor, url : url};
155     }
156     
157     var getEditorUpdate = function(id) {
158         tableEditor.find("#_method").val(URL.update.method);
159         var url = URL.update.url + "/" + id;
160         return {editor : tableEditor, url : url};
161     }
162     
163     var getEditorDelete = function() {
164         var url = URL["delete"].url;
165         return {editor : tableEditor, url : url , method: URL["delete"].method};
166     }
167     
168     /* 表格操作 */
169     //    根據選中專案數切換按鈕點選狀態
170     var changeToolbarStatus = function(row,tr) {
171         var select = $(`#datatable`).bootstrapTable(`getSelections`);
172         $("#toolbar").find("#btn_edit").attr("disabled",select.length != 1);
173         $("#toolbar").find("#btn_delete").attr("disabled",select.length == 0);
174     }
175     // 表格屬性
176     var initTable = function() {
177         $(`#datatable`).bootstrapTable({
178             showColumns: true,
179             toolbar: "#toolbar",
180             iconSize: "sm",
181             idField : "id",
182             clickToSelect: true,
183             
184             url: "roles",
185             contentType: "application/x-www-form-urlencoded",
186             dataField : "rows",
187             queryParams: function(params) {
188                 params["std.offset"] = params.offset;
189                 params["std.limit"] = params.limit;
190                 return params;
191             },
192             
193             sidePagination: "server",
194             pagination: true,
195             pageNumer: 1,
196             pageSize: 20,
197             pageList: [20,50,100],
198             
199             columns:[
200                 {
201                     title:``,
202                     field:`_select`,
203                     checkbox:true,
204                     align:`center`
205                 },
206                 {
207                     title: "ID",
208                     field: "id",
209                     visible: false
210                 },
211                 {
212                     title: "名稱",
213                     field: "name"
214                 },
215                 {
216                     title: "描述",
217                     field: "description"
218                 }
219             ],
220             
221             onCheck: changeToolbarStatus,
222             onUncheck: changeToolbarStatus
223         });
224     }
225     initTable();
226     
227     
228     // ajax提交資料後的操作
229     var onSubmitOver = function(data) {
230         if(data.success)
231             $("#datatable").bootstrapTable("refresh");
232         else {
233             var html = `<div class="alert alert-warning alert-dismissible fade in" role="alert">`;
234             html += `<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button>`;
235             html += `<p>` + data.errorMsg + `</p>`;
236             html += `</div>`;
237             $("#alert").append(html);
238         }    
239     }
240     
241     // 用於開啟編輯表單
242     var openEditor = function(editor,onBeforeOpen) {
243         return new Promise(function(resolve,reject) {
244             if(onBeforeOpen)
245                 onBeforeOpen(editor.editor.find("form"));
246             
247             editor.editor.modal(`show`);
248             editor.editor.find("input[type=text]:first")[0].focus();
249             
250             editor.editor.find("#btn-ok").on("click",function() {
251                 var data = editor.editor.find("form").serializeArray();
252                 resolve(data);
253                 editor.editor.modal("hide");
254             });
255             editor.editor.find("#btn-cancel").on("click",function() {
256                 reject();
257             });
258             
259         });
260     }
261     // 用於對第一個輸入框聚焦
262     tableEditor.on("shown.bs.modal",function() {
263         tableEditor.find("input[type=text]:first")[0].focus();
264     });
265     // 關閉時清除form內容
266     tableEditor.on("hidden.bs.modal",function() {
267         tableEditor.find(":input").not(`:button,:submit,:reset`).val("");
268     });
269     
270     // 開啟新增表單
271     $("#toolbar").find("#btn_add").on("click",function() {
272         var editor = getEditorInsert();
273         openEditor(editor).then(function(data) {
274             var submitParam = {};
275             for(idx in data) {
276                 var item = data[idx];
277                 if(item.name != "id") {
278                     submitParam[item.name] = item.value;
279                 }
280             }
281             $.post(editor.url,submitParam,onSubmitOver,`json`);
282         });
283     });    
284     
285     // 開啟編輯表單
286     $("#toolbar").find("#btn_edit").on("click",function() {
287         var select = $(`#datatable`).bootstrapTable(`getSelections`);
288         var line = select[0];
289         
290         var beforeOpen = function(form) {
291             $.each(line,function(key,value) {
292                 form.find("#" + key).val(value);
293             });
294         }
295         var editor = getEditorUpdate(line.id);
296         openEditor(editor,beforeOpen).then(function(data) {
297             var submitParam = {};
298             for(idx in data) {
299                 var item = data[idx];
300                 submitParam[item.name] = item.value;
301                 
302             }
303             //console.info(submitParam)
304             $.post(editor.url,submitParam,onSubmitOver,`json`);
305         });
306     });
307     
308     // 刪除確認
309     var deleteConfirm = function() {
310         return new Promise(function(resolve,reject) {
311             var select = $(`#datatable`).bootstrapTable(`getSelections`);
312             if(select.length == 0) {
313                 reject();
314                 return;
315             }
316             
317             $("#datatable-confirm").find("#btn-ok").on("click",function() {
318                 resolve(select);
319                 $("#datatable-confirm").modal("hide");
320             });
321             $("#datatable-confirm").find("#btn-cancel").on("click",function() {
322                 reject();
323             });
324             $("#datatable-confirm").modal("show");
325         });
326     }
327     // 刪除按鈕點選
328     $("#toolbar").find("#btn_delete").on("click",function() {
329         var editor = getEditorDelete();
330         deleteConfirm().then(function(select) {
331             var ids = [];
332             $.each(select,function(idx,item) {
333                 ids.push(item.id);
334             });
335         
336             $.post(editor.url,{"_method":editor.method,ids:ids},onSubmitOver,`json`);
337         });
338     });
339     //    查詢使用者    
340     var oInp=document.querySelector(`.select-name`);
341     var oSet=document.querySelector(`.select-description`);
342     var searchName=null,searchDes=null;
343     var str=``;
344     var arrDate=[];
345     function getName(){
346         searchName = oInp.value;
347     }
348     function getDes(){
349         searchDes = oSet.value;
350     }
351     oInp.oninput = getName;
352     oSet.oninput = getDes;
353     $(`#select-form`).find(`.btn-search`).on(`click`,function(){
354         //按name和description檢索
355         if(searchName!= null && searchDes!= null){
356             $.ajax({
357                 async: false,
358                 type: "get",
359                 url:`http://*.*.*.*:8090/system/role/roles`,
360                 contentType : "application/x-www-form-urlencoded; charset=utf-8",
361                 data:{
362                     name:searchName,
363                     description:searchDes
364                 },
365                 success: function (res) {
366                     $(`#datatable`).bootstrapTable(`removeAll`)  //刪除表格資料
367                     $(`#datatable`).bootstrapTable(`append`, res.rows)  //新增表格資料
368                 },
369                 error: function (err) {
370                     console.log(`伺服器有誤`+err)
371                 }
372            })
373         //按name搜尋
374         }else if(searchName != `` && searchDes == null){
375             $.ajax({
376                 async: false,
377                 type: "get",
378                 url:`http://*.*.*.*:8090/system/role/roles`,
379                 contentType : "application/x-www-form-urlencoded; charset=utf-8",
380                 data:{
381                     name:searchName
382                 },
383                 success: function (res) {
384                     $(`#datatable`).bootstrapTable(`removeAll`)  //刪除表格資料
385                     $(`#datatable`).bootstrapTable(`append`, res.rows)  //新增表格資料
386                 },
387                 error: function (err) {
388                     console.log(`伺服器有誤`+err)
389                 }
390            })
391         }else if(searchName == null && searchDes != ``){
392             $.ajax({
393                 async: false,
394                 type: "get",
395                 url:`http://*.*.*.*:8090/system/role/roles`,
396                 contentType : "application/x-www-form-urlencoded; charset=utf-8",
397                 data:{
398                     description:searchDes
399                 },
400                 success: function (res) {
401                     $(`#datatable`).bootstrapTable(`removeAll`)  //刪除所有表格資料
402                     $(`#datatable`).bootstrapTable(`append`, res.rows)  //新增表格資料
403                 },
404                 error: function (err) {
405                     console.log(`伺服器有誤`+err)
406                 }
407            })
408         }
409     })
410 });
411 </script>
412 <!-- footer -->
413 <div th:include="@{import} :: footer"></div>
414 </body>
415 </html>

4.中文文件

  https://blog.csdn.net/S_clifftop/article/details/77937356?locationNum=3&fps=1(網站轉載)

5.效果圖

  剛想貼圖,發現伺服器炸了······下次再貼   看這個的時候對著文件一起看。

  

 

相關文章