記Bootstrap Table兩種渲染方式


這里主要區別兩種Bootstrap Table的數據渲染方式,一、屬性渲染方式,二、JS渲染方式

工作直接接手前人的,之前都直接在table標簽上渲染屬性,后面因為項目需要,同一頁面的表格,需要申請不同的接口獲取數據,寫兩個表格后期數據量大的時候浪費頁面資源還增加了請求,所以最后改成了JS渲染方式,先貼表格效果:

一是屬性渲染方式:省去表格所在項目引用的樣式,單論數據加載,HTML代碼就是簡單的table表格的結構,table標簽上添加data-屬性,控制表格渲染效果。

HTML:

 1 <table id="UnDistributeTable" class="table table-hover  table-responsive table-bordered grayTable" data-toggle="table"
 2        data-query-params="Setparams_UnDistribute" data-query-params-type="" data-method="post"
 3        data-url="/api/data " 
 4        data-side-pagination="server" data-sort-name=""
 5        data-id-field="WorkID" data-height="" data-page-number="1" data-response-handler="GetData" data-striped=true
 6        data-pagination="true" data-page-size="15" data-page-list="[50,100,200]">
 7     <thead>
 8         <tr>
 9             <th data-field="PONum" data-sortable="true">
10                 PO單號
11             </th>
12             <th data-field="AllotWorkNum" data-sortable="true">
13                 分配單號
14             </th>
15             <th data-field="NKAFlagName" data-sortable="true">
16                 單據類型
17             </th>
18             <th data-field="Purpose" data-sortable="true">
19                 用途
20             </th>
21             <th data-field="SumQuantity">
22                 物料總量
23             </th>
24             <th data-field="SumAllocationQuantity" >
25                 已分配數量
26             </th>
27             <th data-field="OperatorName">
28                 上級辦理人
29             </th>
30             <th data-field="OperatorTime">
31                 上級辦理時間
32             </th>
33             <th data-field="" data-formatter="Opera" >
34                 操作
35             </th>
36         </tr>
37     </thead>
38 </table>
HTML Code

JS:

 1 function Setparams_UnDistribute(params) {
 2     var e = [{ PageSize: params.pageSize, PageIndex: params.pageNumber, OrderByField: params.sortName, OrderByType: params.sortOrder == "asc" ? 0 : 1, AllotState: 0,PONum:"" }];
 3     return e;
 4 }
 5 
 6 function GetData(res) {
 7     return {
 8         "total": res.Total,   //總頁數
 9         "rows": res.Data   //數據
10     };
11 }
JS Code

這樣就能夠加載出路徑url的數據了。

二就是JS加載方式,不會在table標簽上添加其他的屬性,table的結構更加清楚。

HTML:

 1 <table id="DistributeTable" class="table table-hover  table-responsive table-bordered grayTable" >
 2     <thead>
 3         <tr>
 4             <th data-field="CheckState" >
 5                 審核狀態
 6             </th>
 7             <th data-field="PONum" data-sortable="true">
 8                 PO單號
 9             </th>
10             <th data-field="WorkNum" data-sortable="true">
11                 分配單號
12             </th>
13             <th data-field="NKAFlagName" data-sortable="true">
14                 單據類型
15             </th>
16             <th data-field="Purpose" data-sortable="true">
17                 用途
18             </th>
19             <th data-field="SumQuantity" >
20                 物料總量
21             </th>
22             <th data-field="SumAllocationQuantity" >
23                 本次分配數量
24             </th>
25             <th data-field="OperatorName" data-sortable="true">
26                 分配人
27             </th>
28             <th data-field="OperatorTime" data-sortable="true">
29                 分配時間
30             </th>
31             <th data-field="SumQuantity" data-sortable="true">
32                 物料總量
33             </th>
34             <th data-field="" data-formatter="OperaView">
35                 操作
36             </th>
37         </tr>
38     </thead>
39 </table>
HTML Code

JS:

 1 $(function () {
 2   var oTable = new TableInit();
 3   oTable.Init();
 4 });
 5 var TableInit = function () {
 6     var oTableInit = new Object();
 7     //初始化Table
 8     oTableInit.Init = function () {
 9         var url = ‘/api/data’;         //請求后台的URL(*)
10 
11         $('#DistributeTable').bootstrapTable({
12             url: url,
13             method: 'post',                     
14             striped: true,                      
15             cache: false,                  //是否使用緩存,默認為true
16             pagination: true,                   
17             sortable: true,  
18             sortName:"PONum",
19             queryParams: oTableInit.queryParams,
20             sidePagination: "server",           
21             pageNumber: 1,                      
22             pageSize:15,                       
23             pageList: [25, 50, 100],        
24             uniqueId: "id",              //每一行的唯一標識,一般為主鍵列
25             responseHandler: function (res) {
26                 return {
27                     "total": res.Total,
28                     "rows": res.Data   
29                 };
30 
31             }
32         });
33     };
34 
35     //得到查詢的參數
36     oTableInit.queryParams = function (params) {
37         var e = [{ PageSize: params.limit, PageIndex: Math.floor(params.offset / params.limit) + 1, OrderByField: params.sort , OrderByType: params.order == "asc" ? 0 : 1, AllotState: 1, PONum:"" }];
38         return e;
39     };
40     return oTableInit;
41 };
JS Code

兩種方式,渲染所得效果一致,完美,具體使用時,采用哪種方式渲染表格都可以,屬性渲染更清楚顯示出表格與參數設置的對應關系,適用於功能固定的表格,如果頁面同一表所要加載的數據源會發生變化的話,最好使用第二種JS 渲染表格的方式,可以添加表格加載條件,來判斷具體加載哪一數據源的數據,控制表格表格加載數據並渲染。

另,Bootstrap Table表格中有一點我比較迷茫的地方還沒弄清楚,所以也提一下,就是table標簽中一般有data-toggle=”table”屬性值的設置,設置了就表示不寫JS啟用表格,一般在對table進行JS初始化的時候,比如寫$(“#table”).bootstrapTable({“data”, data});這種的時候,如果聲明了該屬性,就無法正常渲染表格;但是如果使用Bootstrap Table方法渲染表格,比如$(“#table”).bootstrapTable(“load”, data);就必須添加該屬性,否則也無法正常顯示。

 注-版權聲明:本文為博主原創文章,未經博主允許不得轉載。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM