在开发中遇到一个需要动态生成table的需求,包括表头和数据。在调试的过程中遇到很多问题,包括数据分页,解决之后记录一下。

如下代码的数据加载流程:

①表头是动态的,在初始化table之前需要调一次后台拿到表头数据存储再全局变量table_columns中,调用initTable()初始化table。(此时table只加载出表头,没有数据。)

②table加载之后调用下面refreshTable()方法,请求后台拿到数据,此处因为我这里后台的数据不是bootstrap-table能处理的数据格式,使用了responseHandler对返回数据进行了格式化。

③之后如果需要显示其他数据,调用destroyTable()方法销毁table再重新初始化即可。

数据格式

我这里使用的是server分页,需要的数据格式是{“total”:“总条数”,“rec”:“[{},{}]”} 这种json格式的。total表示总记录条数(server分页必须有此键),rec是数组形式的(默认应该是叫做rows,此处我在初始化table时将dataField设置成了rec)。

表头也是json数组格式的:table_columns=[{"checkbox": "true"},{"field": "Create date","title": "Create date"},{"field": "Create time","title": "Create time"}];

//table标签
<table id="auto_table"></table>
//下面是动态table js代码
//设置全局变量queryFlag 用于判断是点击查询按钮 还是点击下方分页的页码 不设置此参数会导致如果点击了分页页码,再选择其他条件查询时,offset参数传递到后台不是0
var queryFlag=false;
// 动态table表头数组
    var table_columns=[];

//是初始化table的代码
function initTable(){ $('#auto_table').bootstrapTable({
//url: '', //请求后台的URL(*)因为是动态表头,table加载时不请求后台,只初始化表头
contentType: "application/json", //期望后台返回数据类型
//data:table_data, //直接加载静态数据 此处不使用
method: 'POST', //请求方式(*)
dataField: "rec", //数据节点 默认为rows 改成rec后需要后台返回的数组为rec
toolbar: '#toolbar', //工具按钮用哪个容器
striped: true, //是否显示行间隔色
cache: false, //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
pagination: true, //是否显示分页(*)
sortable: true, //是否启用排序
sortOrder: "asc", //排序方式
sidePagination: "server", //分页方式:client客户端分页,server服务端分页(*) 两种分页方式所需的数据结构不同
limit: 10, //每页的记录行数(*)
offset: 1, // 初始化加载第一页,默认第一页,并记录
totalrows:0, //记录总条数
pageList: [10, 25, 50], //可供选择的每页的行数(*)
search: false, //是否显示表格搜索
strictSearch: true,
singleSelect: true, //单选框 true表示单选
showColumns: true, //是否显示所有的列(选择显示的列)
showRefresh: false, //是否显示刷新按钮
minimumCountColumns: 2, //最少允许的列数
clickToSelect: true, //是否启用点击选中行
//height: 500, //行高,如果没有设置height属性,表格自动根据记录条数觉得表格高度
//uniqueId: "ID", //每一行的唯一标识,一般为主键列
showToggle: true, //是否显示详细视图和列表视图的切换按钮
cardView: false, //是否显示详细视图
detailView: false, //是否显示父子表
//得到查询的参数
queryParams : function (params) {
//传到后台的参数 这里的键的名字和后台控制器的变量名必须一致,这边改动,控制器也需要改成一样的
var temp = {
            //分页参数 这三个参数传到后台即可进行分页
limit: params.limit,
offset: params.offset,
totalrows: params.totalRows,
            //下面是个性化请求参数 根据你的业务传值
key_word1: $("#qry_keyword1").val(),
key_word1_name: $("#qry_keyword1_name").val(),
bus_cd:$("#qry_bus_cd").val()
};
           if(queryFlag){
              temp.offset=0;
           }
return JSON.stringify(temp);
},
columns:table_columns, //动态表头 数据从后台获取
onLoadSuccess: function () {
console.log("load success");
}, }); }

//刷新table   
function refreshTable(){
     queryFlag=true;
$('#auto_table').bootstrapTable('refreshOptions',
{ 'url': "url:此处为后台url",
responseHandler: function(data){
var recData=new Array();
var data_rec=data.rec;
for(let i=0;i<data.rec_num;i++){
recData[i]=JSON.parse(data_rec[i].data);
recData[i].compare_data=data_rec[i].data;
recData[i].old_data=data_rec[i].old_data;
}
return {
"total":data.total,
"rec":recData
};
},
});
     queryFlag=false;
}
    /**
* 销毁table
*/
function destroyTable(){
$('#auto_table').bootstrapTable('destroy');
}

Bootstrap-table动态表格的更多相关文章

  1. [转]bootstrap table 动态列数

    原文地址:https://my.oschina.net/u/2356355/blog/1595563 据说bootstrap table非常好用,从入门教程中了解到它的以下主要功能: 由于固定表头意味 ...

  2. 如何去掉bootstrap table中表格样式中横线竖线

    修改之前,表格看上去比较拥挤,因为bootstrap table插件中自带斑马线表格样式,有横线和竖线分栏,现在我们不需要这些. 应UI设计的要求,要去掉中间的横线和竖线,使用了修改需求中一种简单粗暴 ...

  3. BootStrap table动态增删改表格内数据

    1:添加一个[操作]列   { title: "操作", align: 'center', valign: 'middle', width: 160, // 定义列的宽度,单位为像 ...

  4. bootStrap Table 如何使用

    最近在使用bootStrap Table 的表格功能有一些自己的理解写下来分享一下主要用的是一个bootStrapTable 和 jquery 的混合开发 具体怎样引入bootStrap Table ...

  5. bootstrap table 标题列重复

    使用bootstrap table生成表格,出现一个奇怪问题,标题列重复.查了一大堆资料,没有找到可以解决问题的. 以为是类库版本的问题,全部替换成了example中的引用,还是这个问题. 后来仔细查 ...

  6. bootstrap table使用及遇到的问题

    本人前端菜鸟一枚,最近使用bootstrap table实现表格,记录一下以便日后翻阅,废话不多说,先看效果图: 1.首先说下要实现该效果需要添加的css样式及所需的js文件,具体下载地址就不粘贴了( ...

  7. JS组件系列——Bootstrap Table 表格行拖拽

    前言:之前一直在研究DDD相关知识,好久没更新JS系列文章了.这两天做了一个简单的业务需求,觉得效果还可以,今天在这里分享给大家,欢迎拍砖~~ 一.业务需求及实现效果 项目涉及到订单模块,那天突然接到 ...

  8. JS组件系列——Bootstrap Table 表格行拖拽(二:多行拖拽)

    前言:前天刚写了篇JS组件系列——Bootstrap Table 表格行拖拽,今天接到新的需要,需要在之前表格行拖拽的基础上能够同时拖拽选中的多行.博主用了半天时间研究了下,效果是出来了,但是感觉不尽 ...

  9. 表格组件神器:bootstrap table详细使用指南

    1.bootstrap-table简介 1.1.bootstrap table简介及特征: Bootstrap table是国人开发的一款基于 Bootstrap 的 jQuery 表格插件,通过简单 ...

  10. 【转】bootstrap table轻松实现数据表格

    在使用bootstrap table时可能在很多时候回用的表格来显示数据,如果自己写那肯定没问题,但是数据展示出来就麻烦多了,然而bootstrap table 封装了一套完善的数据表格组件,把从后台 ...

随机推荐

  1. 什么是SimpleNVR流媒体服务器软件?

    SimpleNVR是一款新兴流媒体服务器应用软件,占用内存少,无插件.跨平台,应用非常广泛,操作简单易上手,同时还支持一键观看,十分便捷.另外,跟其他一般流媒体服务器不同,SimpleNVR支持开发者 ...

  2. Jmeter下载安装(一)

    一.JMeter介绍       JMeter使用了不同技术和协议,是一款可以进行配置和执行负载测试.性能测试和压力测试的工具.负载测试.性能测试和压力测试概念: 负载测试: 这类测试使系统或者应用程 ...

  3. C++ new 运算符 用法总结

    C++ new 运算符 用法总结 使用 new 运算符 分配内存 并 初始化 1.分配内存初始化标量类型(如 int 或 double),在类型名后加初始值,并用小括号括起,C++11中也支持大括号. ...

  4. robot_framewok自动化测试--(1)Robot Framework 环境搭建及常见日志问题解决办法

    一.Robot Framework 介绍 Robot Framework 的架构是一个通用的验收测试和验收测试驱动开发的自动化测试框架(ATDD).它具有易于使用的表格来组织测试过程和测试数据. 它使 ...

  5. 权限控制-RBAC(Role-Based Access Control)

    RBAC是基于角色的权限访问控制,在RBAC中角色与权限相连,用户通过成为某个角色而得到角色的权限,这就极大的简化了权限的管理,用户和角色多对多,角色和权限多对多,由此产生用户表.角色表.权限表,用户 ...

  6. 【故障公告】突然猛增的巨量请求冲垮一共92核CPU的k8s集群

    非常抱歉,今天下午2点左右开始,博客站点突然猛增的巨量请求让k8s集群的节点服务器不堪重负,造成网站无法正常访问,由此给您带来麻烦,请您谅解. 当时k8s集群一共6台node服务器,2台32核64G, ...

  7. [cf1103E]Radix sum

    类似于uoj272,即$B=10$的情况,然后有以下几个细节问题: 1.答案对$2^{58}$取模可以先使用自然溢出模$2^{64}$,最后对$2^{58}$取模即可 2.为了避免实数,令$\omeg ...

  8. [JS高程]JavaScript中的RegExp对象

    目录 1. RegExp 1.1 表示格式: 1.2 匹配模式: 1.3 RegExp 实例属性 1.4 RegExp 实例方法 1.4.1 exec() 1.4.1.1 基本用法 1.4.1.2 e ...

  9. JAVA后端方面,如何快速达到能实习的程度

        概要地讲,是先广度再深度,面试开发两手抓. 首先说学习方法,因为很多初学者没继续下去,不是能力不行,而是方法不当.对比下错误和正确的方法. 1 光看视频光看资料不动手连,这样转眼就忘.正确的做 ...

  10. 【Java面试题】-- Java String

    Java String 2019-11-02  17:40:45  by冲冲 1.String的内存位置 String是定义在 java.lang 包下的一个类.它不是基本数据类型.String是不可 ...