[转]bootstrap的table插件动态加载表头
原文地址:https://blog.csdn.net/abubu123/article/details/78060321
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,所以需要调用后者。
展示效果:
动态加载表头其实就是类似Echart中动态加载数据的感觉一样,只是改变整个Option中的相关属性即可。
优点:代码量会大大减少,当我们要加载不同数据且样式一样的表格的时候可以采用这样的方式。
缺点:样式很难维护。前端人员不好定位bug,所以很难修改相应的样式bug。
依据项目实际情况,择优使用吧。
[转]bootstrap的table插件动态加载表头的更多相关文章
- bootstrap table插件动态加载表头
这篇文章主要为大家详细介绍了bootstrap table插件动态加载表头,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 bootstrap的table属性已经很熟悉了,最近遇到一个问题,犹豫 ...
- 项目总结—jQuery EasyUI-DataGrid动态加载表头
http://blog.csdn.net/zwk626542417/article/details/19248747 概要 在前面两篇文章中,我们已经介绍了在jQuery EasyUI-DataGri ...
- jQuery EasyUI-DataGrid动态加载表头
项目总结—jQuery EasyUI-DataGrid动态加载表头 目录(?)[-] 概要 实现 总结 概要 在前面两篇文章中,我们已经介绍了在jQuery EasyUI-DataGrid ...
- js插件动态加载js、css解决方案
最近因为工作需要做了一个js自动导入的插件,一开始很天真的以为动态创建个script添加到head中就ok了,试了之后才发现了问题,就是如果同时引入了多个js文件,而且后一个文件中用到了前一个文件中的 ...
- zTree树插件动态加载
需求: 由于项目中家谱图数据量超大,而一般加载方式是通过,页面加载时 zTree.init方法进行数据加载,将所有数据一次性加载到页面中.而在项目中家谱级别又非常广而深,成千上万级,因此一次加载,完全 ...
- EasyUI datagrid 动态加载表头和数据
首先返回到页面的需要是JSON数据: 第一步: 遍历表头,插入到array中 for (var i = 0; i < jsonObj.title.length; i++) { //把返回的数据封 ...
- C# 实现动态加载DLL插件 及HRESULT:0x80131047处理
本代码实现DLL的动态加载, 类似PS里的滤镜插件! 1. 建立一个接口项目类库,此处名称为:Test.IPlugin using System; namespace Test.IPlugin { p ...
- 动态加载DataGrid表头及数据
初始化表头 js生成前端 /*初始化表头*/ function initDataGridTitle(id) { $.ajax({ url: '/${appName}/report/***/***', ...
- Bootstrap Table表格一直加载(load)不了数据-解决办法
bootstrap-table是一个基于Bootstrap风格的强大的表格插件神器,官网:http://bootstrap-table.wenzhixin.net.cn/zh-cn/ 这里列出遇到的一 ...
随机推荐
- Dapper MySql DateTime 异常
实体类 字段类型 DateTime? ,MySQL数据库中字段类型 datetime NULL , 使用dapper扩展读取,报异常:Error Parse column: ** - Object. ...
- 10分钟轻松设置出 A+ 评分的 HTTP/2 网站
前言 其实 HTTP/2 应该是 2015 年的老话题了(2015 年 5 月 14 日 HTTP/2 协议正式版的发布),但是 2018 年都到了很多网站依旧没有使用,作为新一代互联网协议,HTTP ...
- 让Redis在你的系统中发挥更大作用
Redis在很多方面与其他数据库解决方案不同:它使用内存提供主存储支持,而仅使用硬盘做持久性的存储:它的数据模型非常独特,用的是单线程.另一个大区别在于,你可以在开发环境中使用Redis的功能,但却不 ...
- php分享二十八:mysql运行中的问题排查
一:杀掉mysql连接的方法: kill thread_id: 杀掉当前进程,断开连接 kill query thread_id: 只杀掉某连接当前的SQL,而不断开连接. 批量杀死MySQL连接的 ...
- Android 移动端数据结构
## SparseArray ## SparseBooleanArray ## SparseIntArray ## SparseLongArray * 位于android.util,Android 中 ...
- Retina屏的移动设备如何实现真正1px的线
前些日子总被人问起 iOS Retina 屏,设置 1px 边框,实际显示 2px,如何解决?原来一直没在意,源于自己根本不是像素眼……今天仔细瞅了瞅原生实现的边框和CSS设置的边框,确实差距不小…… ...
- 菜鸟学SSH(十七)——基于注解的SSH将配置精简到极致
很早之前就想写一篇关于SSH整合的博客了,但是一直觉得使用SSH的时候那么多的配置文件,严重破坏了我们代码整体性,比如你要看两个实体的关系还得对照*.hbm.xml文件,要屡清一个Action可能需要 ...
- distill 来自google,openai,deepmind,YC research
https://distill.pub/ https://colah.github.io/
- (原创)用c++11实现简洁的ScopeGuard
ScopeGuard的作用是确保资源面对异常时总能被成功释放,就算没有正常返回.惯用法让我们在构造函数里获取资源,当因为异常或者正常作用域结束,那么在析构函数里释放资源.总是能释放资源.如果没有异常抛 ...
- linux命令(53):用户和用户组
Linux 用户和用户组详细解说 本文主要讲述在Linux 系统中用户(user)和用户组(group)管理相应的概念: 用户(user)和用户组(group)相关命令的列举: 其中也对单用户多任务, ...