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 相关文章推荐
javascript实现的网页局布刷新效果
Dec 01 Javascript
Jquery 选中表格一列并对表格排序实现原理
Dec 15 Javascript
JS控件ASP.NET的treeview控件全选或者取消(示例代码)
Dec 16 Javascript
js和css写一个可以自动隐藏的悬浮框
Mar 05 Javascript
js 3秒后跳转页面的实现代码
Mar 10 Javascript
jQuery+PHP实现动态数字展示特效
Mar 14 Javascript
JS验证邮件地址格式方法小结
Dec 01 Javascript
详解Javascript数据类型的转换规则
Dec 12 Javascript
JS基于面向对象实现的多个倒计时器功能示例
Feb 28 Javascript
VUE页面中加载外部HTML的示例代码
Sep 20 Javascript
Vue将页面导出为图片或者PDF
Aug 17 Javascript
DatePickerDialog 自定义样式及使用全解
Jul 09 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(视频)Http下载
2006/12/12 PHP
php长字符串定义方法
2012/07/12 PHP
如何在PHP中使用正则表达式进行查找替换
2013/06/13 PHP
为PHP5.4开启Zend OPCode缓存
2014/12/26 PHP
php让json_encode不自动转义斜杠“/”的方法
2020/04/27 PHP
用js实现的模拟jquery的animate自定义动画(2.5K)
2010/07/20 Javascript
js中array的sort()方法使用介绍
2014/02/20 Javascript
JavaScript学习笔记之Function对象
2015/01/22 Javascript
JavaScript中setUTCMilliseconds()方法的使用详解
2015/06/12 Javascript
移动手机APP手指滑动切换图片特效附源码下载
2015/11/30 Javascript
javascript闭包概念简单解析(推荐)
2016/06/03 Javascript
简单的js计算器实现
2016/10/26 Javascript
javascript 内置对象及常见API详细介绍
2016/11/01 Javascript
浅谈jquery页面初始化的4种方式
2016/11/27 Javascript
微信公众平台开发教程(六)获取个性二维码的实例
2016/12/02 Javascript
jQuery Form表单取值的方法
2017/01/11 Javascript
Javascript for in的缺陷总结
2017/02/03 Javascript
浅谈在vue项目中如何定义全局变量和全局函数
2017/10/24 Javascript
vuex进阶知识点巩固
2018/05/20 Javascript
Vue一个案例引发的递归组件的使用详解
2018/11/15 Javascript
ES6 更易于继承的类语法的使用
2019/02/11 Javascript
Python开发如何在ubuntu 15.10 上配置vim
2016/01/25 Python
Python发送form-data请求及拼接form-data内容的方法
2016/03/05 Python
python机器学习之神经网络(一)
2017/12/20 Python
pandas的object对象转时间对象的方法
2018/04/11 Python
Python爬虫之正则表达式的使用教程详解
2018/10/25 Python
Python操作MySQL数据库的两种方式实例分析【pymysql和pandas】
2019/03/18 Python
详解Python打包分发工具setuptools
2019/08/05 Python
详解Django admin高级用法
2019/11/06 Python
canvas探照灯效果的示例代码
2018/11/30 HTML / CSS
全球性的女装店:storets
2019/06/12 全球购物
空字符串(“”)和null的区别
2012/11/13 面试题
个人简历中的自我评价范例
2013/10/29 职场文书
简历上的自我评价
2014/02/03 职场文书
十佳护士先进事迹
2014/05/08 职场文书
仅用几行Python代码就能复制她的U盘文件?
2021/06/26 Python