bootstrap table插件动态加载表头


Posted in Javascript onJuly 19, 2019

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

思路:

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

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

3、加载表格展示。

大致代码如下:

表格:

var peopleOptions;
// 人口列表加载
function tableItem() {
  peopleOptions = {
    method : "POST", // 使用get请求到服务器获取数据
    url : path + "/api/information/people/getList", // 获取数据的地址
    contentType : "application/x-www-form-urlencoded",// 重要否则POST会报错
    striped : false, // 表格显示条纹
    pagination : true, // 启动分页
    pageSize : 10, // 每页显示的记录数
    pageNumber : 1, // 当前第几页
    pageList : [ 10, 20, 50 ], // 记录数可选列表
    uniqueId : "id",
    showColumns : false, // 显示下拉框勾选要显示的列
    showToggle : false, // 显示 切换试图(table/card)按钮
    clickToSelect : false, // 点击可选
    singleSelect : false, // 禁止多选
    maintainSelected : true, // 在点击分页按钮或搜索按钮时,将记住checkbox的选择项
    sortable : true, // 禁止所有列的排序
    sidePagination : "server", // 表示服务端请求 后台分页
    toolbar : "#toolbar",// 指明自定义的toolbar
    queryParamsType : "undefined",
    queryParams : function queryParams(params) {
      var param = {
        pageNumber : params.pageNumber,
        pageSize : params.pageSize,
        orgId : ztreeId,
        nodeId : ztreeId,
        citizenName : $("#fullname").val().trim(),
        sex : $("#sex").val(),
        age : $("#age").val().trim(),
        identityCode : $("#idCard").val().trim(),
        cellPhone : $("#isMobile").val().trim(),
        adress : $("#adress").val().trim(),
      };
      return param;
    },
    onLoadSuccess : function() { // 加载成功时执行
      responseHandler : function(res) { // 格式化数据
        console.log(res);
        if (res.data.total != undefined)
          tmp = {
            total : res.data.total,
            rows : res.data.rows
          };
        if (res.data.total == undefined)
          tmp = {
            total : res.data.length,
            rows : res.data
          };
        return tmp;
      },
      columns : [ {
        checkbox : true,
        title : '全选',
        valign : 'middle'
      }, {
        title : '序号',
        field : 'number',
        width : '40px',
        align : 'center',
        valign : 'middle',
        formatter : indexFormatter
      }, {
        title : '姓名',
        field : 'citizenName',
        align : 'center',
        valign : 'middle',
      }, {
        title : '年龄',
        field : 'age',
        align : 'center',
        width : 28,
        valign : 'middle',
        formatter : ageFormatter
      }, {
        title : '性别',
        field : 'sex',
        width : 28,
        align : 'center',
        valign : 'middle',
      },{
        title : '身份证号',
        field : 'identityCode',
        align : 'center',
        valign : 'middle',
      }, {
        title : '民族',
        field : 'nation',
        align : 'center',
        valign : 'middle',
      } ]
    }
}
  $table = $("#table").bootstrapTable(peopleOptions);
};

动态获取列:

function getColumns() {
 // 加载动态表格
 $.ajax({
 url : path + "api/information/people/getLableColumn?ztreeId=" + ztreeId,
 type : 'get',
 dataType : "json",
 async : false,
 success : function(returnValue) {
  // 未查询到相应的列,展示默认列
  if (returnValue.retCode == "0") {
  //没查到列的时候把之前的列再给它
  myColumns = $table.bootstrapTable('getOptions').columns[0];
  } else {
  // 异步获取要动态生成的列
  var arr = returnValue.data;
  $.each(arr, function(i, item) {
   myColumns.push({
   "field" : item.labelColumnCode,
   "title" : item.labelColumnName,
   "hide" : true,
   "align" : 'center',
   "valign" : 'middle'
   });
  });
  }
  console.log(myColumns);
  return myColumns;
 }
 });
}

刷新列表:

//点击左侧树后重新加载表格
 $table.bootstrapTable( 
        "refreshOptions", 
        { 
       url : path + "/api/peopledataInfo/getPeopleInfoList", // 获取数据的地址
       columns : myColumns,
       
        } 
    );
  }

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

展示效果:

bootstrap table插件动态加载表头

bootstrap table插件动态加载表头

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

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

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

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JS随即打乱数组实现代码
Dec 03 Javascript
node.js中的http.response.addTrailers方法使用说明
Dec 14 Javascript
javascript获取元素离文档各边距离的方法
Feb 13 Javascript
解决Angular.Js与Django标签冲突的方案
Dec 20 Javascript
原生JS发送异步数据请求
Jun 08 Javascript
Bootstrap与Angularjs的模态框实例代码
Aug 03 Javascript
js实现扫雷小程序的示例代码
Sep 27 Javascript
vue.js实例对象+组件树的详细介绍
Oct 20 Javascript
react组件从搭建脚手架到在npm发布的步骤实现
Jan 09 Javascript
webpack常用配置总览(小结)
Nov 18 Javascript
vue cli3适配所有端方案的实现
Apr 13 Javascript
JS异步宏队列与微队列原理区别详解
Jul 02 Javascript
Vue数据驱动表单渲染,轻松搞定form表单
Jul 19 #Javascript
VueJS 取得 URL 参数值的方法
Jul 19 #Javascript
vue自定义表单生成器form-create使用详解
Jul 19 #Javascript
bootstrap table列和表头对不齐的解决方法
Jul 19 #Javascript
JS开发 富文本编辑器TinyMCE详解
Jul 19 #Javascript
更强大的vue ssr实现预取数据的方式
Jul 19 #Javascript
bootstrap table.js动态填充单元格数据的多种方法
Jul 18 #Javascript
You might like
PHP简介
2006/10/09 PHP
Convert Seconds To Hours
2007/06/16 Javascript
jquery 简单导航实现代码
2009/09/11 Javascript
javascript中检测变量的类型的代码
2010/12/28 Javascript
jQuery获取样式中的背景颜色属性值/颜色值
2012/12/17 Javascript
javascript的回调函数应用示例
2014/02/20 Javascript
node.js Web应用框架Express入门指南
2014/05/28 Javascript
JavaScript新增样式规则(推荐)
2016/07/19 Javascript
微信小程序实现根据字母选择城市功能
2017/08/16 Javascript
ES6 javascript的异步操作实例详解
2017/10/30 Javascript
详解jQuery-each()方法
2019/03/13 jQuery
小程序实现新用户判断并跳转激活的方法
2019/05/20 Javascript
Vue.js递归组件实现组织架构树和选人功能案例分析
2019/07/03 Javascript
在Layui中实现开关按钮的效果实例
2019/09/29 Javascript
TensorFlow.js 微信小程序插件开始支持模型缓存的方法
2020/02/21 Javascript
深入了解JS之作用域和闭包
2020/06/16 Javascript
基于openlayers实现角度测量功能
2020/09/28 Javascript
[01:45]绝对公平!DOTA2队长征召模式详解
2014/04/25 DOTA
python django 实现验证码的功能实例代码
2017/05/18 Python
python日期时间转为字符串或者格式化输出的实例
2018/05/29 Python
django框架基于模板 生成 excel(xls) 文件操作示例
2019/06/19 Python
利用pyshp包给shapefile文件添加字段的实例
2019/12/06 Python
pytorch-神经网络拟合曲线实例
2020/01/15 Python
Python并发爬虫常用实现方法解析
2020/11/19 Python
python中函数返回多个结果的实例方法
2020/12/16 Python
CSS 3.0文字悬停跳动特效代码
2020/10/26 HTML / CSS
HTML5资源预加载(Link prefetch)详细介绍(给你的网页加速)
2014/05/07 HTML / CSS
Topshop法国官网:英国快速时尚品牌
2018/04/08 全球购物
Lulu Guinness露露·吉尼斯官网:红唇包
2019/02/03 全球购物
公司任命书范本
2014/06/04 职场文书
2014幼儿园教师师德师风演讲稿
2014/09/10 职场文书
原告代理词范文
2015/05/25 职场文书
一年之计:2019年下半年的计划
2019/05/07 职场文书
php字符串倒叙
2021/04/01 PHP
mybatis使用oracle进行添加数据的方法
2021/04/27 Oracle
如何制作自己的原生JavaScript路由
2021/05/05 Javascript