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 相关文章推荐
AutoSave/自动存储功能实现
Mar 24 Javascript
ExtJS扩展 垂直tabLayout实现代码
Jun 21 Javascript
客户端限制只能上传jpg格式图片的js代码
Dec 09 Javascript
动感效果的TAB选项卡jquery 插件
Jul 09 Javascript
原生js写的放大镜效果
Aug 22 Javascript
ie中js创建checkbox默认选中问题探讨
Oct 21 Javascript
jQuery中inArray方法注意事项分析
Jan 25 Javascript
Bootstrap零基础学习第一课之模板
Jul 18 Javascript
bootstrap网格系统使用方法解析
Jan 13 Javascript
微信小程序实战之上拉(分页加载)效果(2)
Apr 17 Javascript
JavaScript之underscore_动力节点Java学院整理
Jul 03 Javascript
layDate插件设置开始和结束时间
Nov 15 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
如何提高MYSQL数据库的查询统计速度 select 索引应用
2007/04/11 PHP
php checkdate、getdate等日期时间函数操作详解
2010/03/11 PHP
php中mysql连接和基本操作代码(快速测试使用,简单方便)
2014/04/25 PHP
php实现读取超大文件的方法
2014/07/28 PHP
php文件操作之小型留言本实例
2015/06/20 PHP
Twig模板引擎用法入门教程
2016/01/20 PHP
推荐:极酷右键菜单
2006/11/29 Javascript
IE8 原生JSON支持
2009/04/13 Javascript
js跟随滚动条滚动浮动代码
2009/12/31 Javascript
js change,propertychange,input事件小议
2011/12/20 Javascript
JS 仿腾讯发表微博的效果代码
2013/12/25 Javascript
JS保留两位小数,多位小数的示例代码
2014/01/07 Javascript
JavaScript+CSS控制打印格式示例介绍
2014/01/07 Javascript
jQuery级联操作绑定事件实例
2014/09/02 Javascript
jQuery的ready方法详解
2014/11/27 Javascript
jquery 判断selection range 是否在容器中的简单实例
2016/08/02 Javascript
谈谈PHP中相对路径的问题与绝对路径的使用
2016/08/16 Javascript
原生JS取代一些JQuery方法的简单实现
2016/09/20 Javascript
Bootstrap Img 图片样式(推荐)
2016/12/13 Javascript
React如何避免重渲染
2018/04/10 Javascript
微信小程序扫描二维码获取信息实例详解
2019/05/07 Javascript
nodejs使用node-xlsx生成excel的方法示例
2019/08/22 NodeJs
nodejs+express最简易的连接数据库的方法
2020/12/23 NodeJs
python类继承与子类实例初始化用法分析
2015/04/17 Python
Python实现合并两个列表的方法分析
2018/05/28 Python
Python 实现Windows开机运行某软件的方法
2018/10/14 Python
Python 处理图片像素点的实例
2019/01/08 Python
python实现nao机器人手臂动作控制
2019/04/29 Python
Python使用matplotlib绘制三维参数曲线操作示例
2019/09/10 Python
python3.8 微信发送服务器监控报警消息代码实现
2019/11/05 Python
在django-xadmin中APScheduler的启动初始化实例
2019/11/15 Python
详解Flask前后端分离项目案例
2020/07/24 Python
博朗(Braun)俄罗斯官方商店:德国小家电品牌
2019/09/24 全球购物
网络舆情信息简报
2015/07/21 职场文书
养成教育主题班会
2015/08/13 职场文书
Python使用plt.boxplot()函数绘制箱图、常用方法以及含义详解
2022/08/14 Python