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 相关文章推荐
jQuery父级以及同级元素查找介绍
Sep 04 Javascript
jquery得到font-size属性值实现代码
Sep 30 Javascript
js 判断文件类型并控制表单提交示例代码
Nov 14 Javascript
js的2种继承方式详解
Mar 04 Javascript
三种方式获取XMLHttpRequest对象
Apr 21 Javascript
详谈javascript中的cookie
Jun 03 Javascript
DeviceOne 让你一见钟情的App快速开发平台
Feb 17 Javascript
BootStrap 动态添加验证项和取消验证项的实现方法
Sep 28 Javascript
vue中如何创建多个ueditor实例教程
Nov 14 Javascript
微信小程序实现上传图片裁剪图片过程解析
Aug 22 Javascript
vue+webpack dev本地调试全局样式引用失效的解决方案
Nov 12 Javascript
el-table树形表格表单验证(列表生成序号)
May 31 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 静态变量与自定义常量的使用方法
2010/01/26 PHP
thinkPHP模型初始化实例分析
2015/12/03 PHP
ThinkPHP框架表单验证操作方法
2017/07/19 PHP
PHP回调函数与匿名函数实例详解
2017/08/16 PHP
Yii redis集合的基本使用教程
2020/06/14 PHP
PHP哈希表实现算法原理解析
2020/12/11 PHP
javascript 特殊字符串
2009/02/25 Javascript
js实现瀑布流的一种简单方法实例分享
2013/11/04 Javascript
IE下双击checkbox反应延迟问题的解决方法
2014/03/27 Javascript
JavaScript实现文字与图片拖拽效果的方法
2015/02/16 Javascript
浅述节点的创建及常见功能的实现
2016/12/15 Javascript
详解webpack异步加载业务模块
2017/06/23 Javascript
基于vue cli重构多页面脚手架过程详解
2018/01/23 Javascript
js正则取值的结果数组调试方法
2018/10/10 Javascript
使用Vue 实现滑动验证码功能
2019/06/27 Javascript
微信小程序定义和调用全局变量globalData的实现
2019/11/01 Javascript
vuex入门最详细整理
2020/03/04 Javascript
[00:32]2018DOTA2亚洲邀请赛EG出场
2018/04/03 DOTA
python查看zip包中文件及大小的方法
2015/07/09 Python
Python读取sqlite数据库文件的方法分析
2017/08/07 Python
django创建自定义模板处理器的实例详解
2017/08/14 Python
Python中应该使用%还是format来格式化字符串
2018/09/25 Python
Expedia印度:您的一站式在线旅游网站
2017/08/24 全球购物
C#实现启动一个进程
2016/10/01 面试题
linux面试题参考答案(6)
2014/08/29 面试题
综合测评自我鉴定
2013/10/08 职场文书
大专计算机个人求职的自我评价
2013/10/21 职场文书
会计辞职信范文
2014/01/15 职场文书
幸福家庭事迹材料
2014/02/03 职场文书
法院个人总结
2015/03/03 职场文书
入党积极分子半年考察意见
2015/06/02 职场文书
2015年秋季小学开学标语
2015/07/16 职场文书
小学校园广播稿
2015/08/18 职场文书
导游词书写之黄山
2019/08/06 职场文书
解决hive中导入text文件遇到的坑
2021/04/07 Python
原生JS实现飞机大战小游戏
2021/06/09 Javascript