bootstrap中table插件具体介绍

bootstrap的table属性已经很熟悉了,最近遇到一个问题,犹豫每个列表加载的数据需求不同,所以需要动态的更换表头。 网上有很多加载表格数据的例子,但是却没有找到如何动态加载表格,再加在数据。 虽然可以一个表格加载一种数据,但是本着学习的态度尝试了下这种方式,结果发现是可以执行的。分享下思路和实现过程,以备日后使用。


1、思路:

1、写接口,查询出要展示的列。注意接口中必须要有字段中文名称(columns属性的title值),字段的英文名称(columns的field字段),特别注意filed字段应该与最后查询出的列表中返回的json数据中的key保持一致,不然取不到值。


2、ajax请求刚才的接口,查询出columns,并给table的columns赋值。


3、加载表格展示。


大致代码如下:


2、表格:

[javascript]  view plain  copy
  1. var peopleOptions;  
  2. // 人口列表加载  
  3. function tableItem() {  
  4.     peopleOptions = {  
  5.         method : "POST"// 使用get请求到服务器获取数据  
  6.         url : path + "/api/information/people/getList"// 获取数据的地址  
  7.         contentType : "application/x-www-form-urlencoded",// 重要否则POST会报错  
  8.         striped : false// 表格显示条纹  
  9.         pagination : true// 启动分页  
  10.         pageSize : 10, // 每页显示的记录数  
  11.         pageNumber : 1, // 当前第几页  
  12.         pageList : [ 10, 20, 50 ], // 记录数可选列表  
  13.         uniqueId : "id",  
  14.         showColumns : false// 显示下拉框勾选要显示的列  
  15.         showToggle : false// 显示 切换试图(table/card)按钮  
  16.         clickToSelect : false// 点击可选  
  17.         singleSelect : false// 禁止多选  
  18.         maintainSelected : true// 在点击分页按钮或搜索按钮时,将记住checkbox的选择项  
  19.         sortable : true// 禁止所有列的排序  
  20.         sidePagination : "server"// 表示服务端请求 后台分页  
  21.         toolbar : "#toolbar",// 指明自定义的toolbar  
  22.         queryParamsType : "undefined",  
  23.         queryParams : function queryParams(params) {  
  24.             var param = {  
  25.                 pageNumber : params.pageNumber,  
  26.                 pageSize : params.pageSize,  
  27.                 orgId : ztreeId,  
  28.                 nodeId : ztreeId,  
  29.                 citizenName : $("#fullname").val().trim(),  
  30.                 sex : $("#sex").val(),  
  31.                 age : $("#age").val().trim(),  
  32.                 identityCode : $("#idCard").val().trim(),  
  33.                 cellPhone : $("#isMobile").val().trim(),  
  34.                 adress : $("#adress").val().trim(),  
  35.             };  
  36.             return param;  
  37.         },  
  38.         onLoadSuccess : function() { // 加载成功时执行  
  39.             responseHandler : function(res) { // 格式化数据  
  40.                 console.log(res);  
  41.                 if (res.data.total != undefined)  
  42.                     tmp = {  
  43.                         total : res.data.total,  
  44.                         rows : res.data.rows  
  45.                     };  
  46.                 if (res.data.total == undefined)  
  47.                     tmp = {  
  48.                         total : res.data.length,  
  49.                         rows : res.data  
  50.                     };  
  51.                 return tmp;  
  52.             },  
  53.             columns : [ {  
  54.                 checkbox : true,  
  55.                 title : '全选',  
  56.                 valign : 'middle'  
  57.             }, {  
  58.                 title : '序号',  
  59.                 field : 'number',  
  60.                 width : '40px',  
  61.                 align : 'center',  
  62.                 valign : 'middle',  
  63.                 formatter : indexFormatter  
  64.             }, {  
  65.                 title : '姓名',  
  66.                 field : 'citizenName',  
  67.                 align : 'center',  
  68.                 valign : 'middle',  
  69.             },  {  
  70.                 title : '年龄',  
  71.                 field : 'age',  
  72.                 align : 'center',  
  73.                 width : 28,  
  74.                 valign : 'middle',  
  75.                 formatter : ageFormatter  
  76.             }, {  
  77.                 title : '性别',  
  78.                 field : 'sex',  
  79.                 width : 28,  
  80.                 align : 'center',  
  81.                 valign : 'middle',  
  82.             },{  
  83.                 title : '身份证号',  
  84.                 field : 'identityCode',  
  85.                 align : 'center',  
  86.                 valign : 'middle',  
  87.             }, {  
  88.                 title : '民族',  
  89.                 field : 'nation',  
  90.                 align : 'center',  
  91.                 valign : 'middle',  
  92.             } ]  
  93.         }  
  94. }  
  95.     $table = $("#table").bootstrapTable(peopleOptions);  
  96. };  


3、动态获取列:

[javascript]  view plain  copy
  1. function getColumns() {  
  2.     // 加载动态表格  
  3.     $.ajax({  
  4.         url : path + "api/information/people/getLableColumn?ztreeId=" + ztreeId,  
  5.         type : 'get',  
  6.         dataType : "json",  
  7.         async : false,  
  8.         success : function(returnValue) {  
  9.             // 未查询到相应的列,展示默认列  
  10.             if (returnValue.retCode == "0") {  
  11.                 //没查到列的时候把之前的列再给它  
  12.                 myColumns = $table.bootstrapTable('getOptions').columns[0];  
  13.             } else {  
  14.                 // 异步获取要动态生成的列  
  15.                 var arr = returnValue.data;  
  16.                 $.each(arr, function(i, item) {  
  17.                     myColumns.push({  
  18.                         "field" : item.labelColumnCode,  
  19.                         "title" : item.labelColumnName,  
  20.                         "hide" : true,  
  21.                         "align" : 'center',  
  22.                         "valign" : 'middle'  
  23.                     });  
  24.                 });  
  25.             }  
  26.             console.log(myColumns);  
  27.             return myColumns;  
  28.         }  
  29.     });  
  30. }  


4、刷新列表:

[javascript]  view plain  copy
  1. //点击左侧树后重新加载表格  
  2.     $table.bootstrapTable(    
  3.                   "refreshOptions",    
  4.                   {    
  5.                     url : path + "/api/peopledataInfo/getPeopleInfoList"// 获取数据的地址  
  6.                     columns : myColumns,  
  7.                       
  8.                   }    
  9.           );  
  10.       }   

需要注意的是bootstrap的table提供了两个刷新的方法,一个refresh,一个refreshOptions,前者只是刷新当前表格,后者会将表格中的组件全部更新一遍,因为我们替换了url和columns,所以需要调用后者。


展示效果:



动态加载表头其实就是类似Echart中动态加载数据的感觉一样,只是改变整个Option中的相关属性即可。

优点:代码量会大大减少,当我们要加载不同数据且样式一样的表格的时候可以采用这样的方式。

缺点:样式很难维护。前端人员不好定位bug,所以很难修改相应的样式bug。

依据项目实际情况,择优使用吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值