bootstrap-table 常用總結-1

  兩種表格工具,今天都用到了,一種是我前幾篇寫到過的jqgrid,(傳送門)另一個就是bootstrap-table了。用過之後會發現,兩種表格的方式大同小異,但是爲什麼這次要換成bootstrap-table呢,是因爲我們在寫樹形結構,由於jqgrid 的樹形結構的數據結構和字段要求的太多的,導致了後臺再提供數據的時候需要格式化(實話實說,這個要求的有點多),如果有興趣,大家可以看我這篇博客(傳送門)。所以,我們決定使用bootstrap-table的樹形結構來結果這個問題。引入css和js文件是第一步,這裏我放cdn地址,如果失效了,大家請自行下載

1 <link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
2 <link href="https://cdn.bootcss.com/bootstrap-table/1.11.1/bootstrap-table.min.css" rel="stylesheet">
3 <link href="https://cdn.bootcss.com/jquery-treegrid/0.2.0/css/jquery.treegrid.min.css" rel="stylesheet">  //樹形結構的文件,如果沒有用到,請刪除
4 <script src="https://cdn.bootcss.com/jquery/3.1.1/jquery.min.js"></script>
5 <script src="https://cdn.bootcss.com/bootstrap-table/1.12.1/bootstrap-table.min.js"></script>
6 <script src="https://cdn.bootcss.com/bootstrap-table/1.12.0/extensions/treegrid/bootstrap-table-treegrid.js"></script> //樹形結構的文件,如果沒有用到,請刪除
7 <script src="https://cdn.bootcss.com/jquery-treegrid/0.2.0/js/jquery.treegrid.min.js"></script> //樹形結構的文件,如果沒有用到,請刪除

 

  首先是利用bootstrap-table來加載數據。然後只需要設置幾個基本的“idField”,“treeShowField”,“parentIdField”字段就可以得到樹形接口,非常的簡單,不多說,直接放代碼:

  $table = $("一個table標籤的id");

  1         $table.bootstrapTable({
  2                  url: base_url + '/Gamecharm/show.php',//接口地址
  3                 //url: "__ROOT__/public/js/data.json",//我本地測試的接口地址
  4                 method:"get",//接口地址獲取的方式,post或者get
  5                 //data:data,//如果是我們自己用ajax獲取數據,或者說數據就是本地的,需要放在這裏
  6                 idField: 'id',//父元素的標識,這裏我們使用的是id
  7                 pageNumber:1,//默認第幾頁
  8                 responseHandler:function(res) { //這個其實是和jqgrid中的jsonReader ,就是說bootstrap中和jqgrid一樣,都有默認的字段,如果後臺給我們的不是默認的,所以就需要我們自己更改 如果還是不明白,請看鏈接
  9                     return {
 10                         "data": res.datas //主數據
 11                         //"total": res.result.total
 12                     };
 13                 },
 14                 queryParams:{ //傳參這個和jqgrid中的postData是一樣的,就是接口請求的參數
 15                     "creatTime":getdate()
 16                 },
 17                 columns:  [ //下面是格式化數據
 18                     {
 19                         field: 'id', //需要的字段id
 20                         title: '日期', //列名稱
 21                     },
 22                     {
 23                         field: 'h',
 24                         title: '商戶名',
 25                     },
 26                     {
 27                         field: 'game_id',
 28                         title: '遊戲名',
 29                         formatter:function(cellvalue){
 30                             var str = "";
 31                             for(var i =0;i<game_type_arr.length;i++){
 32                                 if(cellvalue == game_type_arr[i]["game_id"]){
 33                                     str = game_type_arr[i]["game_name"];
 34                                     return str;
 35                                 }
 36                             }
 37                             return str;
 38                         }
 39                     },
 40                     {
 41                         field: 'h',
 42                         title: '玩家數',
 43                     },
 44                     {
 45                         field: 'rounds',
 46                         title: '遊戲局數',
 47                     },
 48                     {
 49                         field: 'bets',
 50                         title: '投注金額',
 51                         formatter:function(cellvalue){
 52                             return (cellvalue/10000).toFixed(4);
 53                         }
 54                     },
 55                     {
 56                         field: 'effects',
 57                         title: '有效投注量',
 58                         formatter:function(cellvalue){
 59                             return (cellvalue/10000).toFixed(4);
 60                         }
 61                     },
 62                     {
 63                         field: 'total_revenue',
 64                         title: '中獎金額',
 65                         formatter:function(cellvalue){
 66                             return (cellvalue/10000).toFixed(4);
 67                         }
 68                     },
 69                     {
 70                         field: 'fees',
 71                         title: '房費',
 72                         formatter:function(cellvalue){
 73                             return (cellvalue/10000).toFixed(4);
 74                         }
 75                     },
 76                     {
 77                         field: 'total_win_agent',
 78                         title: '商戶盈虧',
 79                         formatter:function(cellvalue){
 80                             return (cellvalue/10000).toFixed(4);
 81                         }
 82                     },
 83                     {
 84                         field: 'rtp',
 85                         title: 'RTP(%)',
 86                         formatter:function(cellvalue,rowObject){ //自己格式化數據;這裏需要注意的是,他的參數順序和jqgrid不太一樣,需要注意
 87                             var str ="";
 88                             if(rowObject.effects){
 89                                 str = ((rowObject.total_win_agent / rowObject.effects)*100).toFixed(2) + "%";
 90                             }else{
 91                                 str = "-";
 92                             }
 93                             return str;
 94                         }
 95                     }
 96                 ],
 97                 //在哪一列展開樹形
 98                 treeShowField: 'id',//屬性結構中三角的位置
 99                 //指定父id列
100                 parentIdField: "parent",//根據這個字段來確定哪個是父元素
101                 onResetView: function(data) {
102                     //console.log('load');
103                     $table.treegrid({
104                         initialState: 'collapsed',// 所有節點都摺疊
105                         // initialState: 'expanded',// 所有節點都展開,默認展開
106                         treeColumn: 0,//默認展開幾層,0代表全部不展開
107                         // expanderExpandedClass: 'glyphicon glyphicon-minus',  //圖標樣式
108                         // expanderCollapsedClass: 'glyphicon glyphicon-plus',
109                         onChange: function() {
110                             $table.bootstrapTable('resetWidth');
111                         }
112                     });
113                 },

  到這裏就可以正確的加載第一次的數據了。但是如果我們有自己的搜索條件,需要改變queryParams中的值就可以了,請看下面的代碼:

 1  //點擊搜索按鈕
 2         function search_bth(){
 3             var user_number = $("#user_number").val();//商戶號
 4             var player_id = $("#player_id").val();//玩家賬號
 5             var record_id = $("#record_id").val();//遊記錄ID
 6             var game_id = $("#game_id").val();//遊戲局ID
 7             var game_type = $("#game_type").val();//遊戲類型
 8             var creat_time = $("#start_time").val();//遊戲時間
 9             var filter_data = {}
10             //去掉空格校驗
11             if($.trim(user_number)){ 
12                 filter_data.agentId = $.trim(user_number);
13             }
14             if($.trim(player_id)){ 
15                 filter_data.account = $.trim(player_id);
16             }
17             if($.trim(record_id)){ 
18                 filter_data.orderId = $.trim(record_id);
19             }
20             if($.trim(game_id)){ 
21                 filter_data.roundId = $.trim(game_id);
22             }
23             if($.trim(game_type)){ 
24                 filter_data.gameId = $.trim(game_type);
25             }
26             if($.trim(creat_time)){
27                 filter_data.creatTime = $.trim(creat_time);
28             }
29             
30             console.log(filter_data);
31             //debugger;
32             //$("#table_list_1").bootstrapTable('destroy');
33             // $('#table_list_1').bootstrapTable({
34             //     queryParams:filter_data,
35             //     url: "__ROOT__/public/js/data.json",
36             // });
37             $('#table_list_1').bootstrapTable('refresh',{query:filter_data})//等到我們需要傳輸的參數,直接刷新頁面
38         }

  最重要的就是37行的代碼,我們用query就可以重新發送請求,然後獲取到最新的數據了!

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章