这篇文章主要为大家详细介绍了bootstrap table插件动态加载表头,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
 

bootstrap的table属性已经很熟悉了,最近遇到一个问题,犹豫每个列表加载的数据需求不同,所以需要动态的更换表头。 网上有很多加载表格数据的例子,但是却没有找到如何动态加载表格,再加在数据。 虽然可以一个表格加载一种数据,但是本着学习的态度尝试了下这种方式,结果发现是可以执行的。分享下思路和实现过程,以备日后使用。

思路:

1、写接口,查询出要展示的列。注意接口中必须要有字段中文名称(columns属性的title值),字段的英文名称(columns的field字段),特别注意filed字段应该与最后查询出的列表中返回的json数据中的key保持一致,不然取不到值。

2、ajax请求刚才的接口,查询出columns,并给table的columns赋值。

3、加载表格展示。

大致代码如下:

表格:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
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);
};

动态获取列:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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;
 }
 });
}

刷新列表:

1
2
3
4
5
6
7
8
9
10
//点击左侧树后重新加载表格
 $table.bootstrapTable(
        "refreshOptions",
        {
       url : path + "/api/peopledataInfo/getPeopleInfoList", // 获取数据的地址
       columns : myColumns,
        
        }
    );
  }

需要注意的是bootstrap的table提供了两个刷新的方法,一个refresh,一个refreshOptions,前者只是刷新当前表格,后者会将表格中的组件全部更新一遍,因为我们替换了url和columns,所以需要调用后者。

展示效果:

动态加载表头其实就是类似Echart中动态加载数据的感觉一样,只是改变整个Option中的相关属性即可。

优点:代码量会大大减少,当我们要加载不同数据且样式一样的表格的时候可以采用这样的方式。

缺点:样式很难维护。前端人员不好定位bug,所以很难修改相应的样式bug。

依据项目实际情况,择优使用吧。

bootstrap table插件动态加载表头的更多相关文章

  1. [转]bootstrap的table插件动态加载表头

    原文地址:https://blog.csdn.net/abubu123/article/details/78060321 bootstrap的table属性已经很熟悉了,最近遇到一个问题,犹豫每个列表 ...

  2. Bootstrap Table表格一直加载(load)不了数据-解决办法

    bootstrap-table是一个基于Bootstrap风格的强大的表格插件神器,官网:http://bootstrap-table.wenzhixin.net.cn/zh-cn/ 这里列出遇到的一 ...

  3. 项目总结—jQuery EasyUI-DataGrid动态加载表头

    http://blog.csdn.net/zwk626542417/article/details/19248747 概要 在前面两篇文章中,我们已经介绍了在jQuery EasyUI-DataGri ...

  4. jQuery EasyUI-DataGrid动态加载表头

    项目总结—jQuery EasyUI-DataGrid动态加载表头     目录(?)[-] 概要 实现 总结   概要 在前面两篇文章中,我们已经介绍了在jQuery EasyUI-DataGrid ...

  5. bootstrap中的动态加载出来的图片轮播中的li标签中的class="active"的动态添加移除

    //该方法是在slide改变时立即触发该事件, $('#myCarousel').on('slide.bs.carousel', function () { $("#myCarousel o ...

  6. js插件动态加载js、css解决方案

    最近因为工作需要做了一个js自动导入的插件,一开始很天真的以为动态创建个script添加到head中就ok了,试了之后才发现了问题,就是如果同时引入了多个js文件,而且后一个文件中用到了前一个文件中的 ...

  7. zTree树插件动态加载

    需求: 由于项目中家谱图数据量超大,而一般加载方式是通过,页面加载时 zTree.init方法进行数据加载,将所有数据一次性加载到页面中.而在项目中家谱级别又非常广而深,成千上万级,因此一次加载,完全 ...

  8. bootstrap 模态框动态加载数据

    .页面中添加modal <!-- 模态框(Modal) --> <div class="modal fade" id="showModal" ...

  9. EasyUI datagrid 动态加载表头和数据

    首先返回到页面的需要是JSON数据: 第一步: 遍历表头,插入到array中 for (var i = 0; i < jsonObj.title.length; i++) { //把返回的数据封 ...

随机推荐

  1. Java High Level REST Client 使用示例

    概述 ES 在 7.0 版本开始将废弃 TransportClient,8.0 版本开始将完全移除 TransportClient,取而代之的是 High Level REST Client,官方文档 ...

  2. Java 之 Servlet 3.0

    Servlet 3.0 好处: 支持注解配置,不需要 web.xml 文件了. 步骤: (1)创建 Java EE 项目,注意:JavaEE 版本必须6.0以上才支持Servlet3.0,可以不创建 ...

  3. C++遍历磁盘驱动器

    #include <stdio.h> #include <windows.h> typedef struct tagDRIVER { // (1)磁盘盘符 wchar_t di ...

  4. django--模型字段引用

    如果内置字段不起作用,您可以尝试使用django-localflavor(文档),其中包含对特定国家和文化有用的各种代码片段. 此外,您可以轻松编写自己的自定义模型字段. 注意 从技术上讲,这些模型是 ...

  5. 【转】DSP动态内存分配函数的使用

    DSP里的动态内存分配,其分配的内存区域在在堆(heap)中.同时DSP里动态分配内存的函数还有calloc以及reclloc.这些动态分配的内存放置在.system段的全局池或堆(heap)中.因此 ...

  6. mac 下enable mysql的load data in file

    1)使用root用户登录mysql 2)将 local_infile 变量设置为true SET GLOBAL local_infile = true; 3)重启数据库 在系统偏好设置中找到MySql ...

  7. 系统调用IO和标准IO

    目录 1. 系统调用IO(无缓冲IO) 系统调用 常用系统调用IO函数 open close read write lseek ioctl 2. 标准IO(带缓冲IO) 概述 缓冲与冲洗 常用标准IO ...

  8. WSDL知识点

    WSDL 是基于 XML 的用于描述 Web Services 以及如何访问 Web Services 的语言. WSDL简介 1.什么是 WSDL? WSDL 指网络服务描述语言 WSDL 使用 X ...

  9. mysql简单优化的一些总结

    mysql对cpu的利用特点: 5.1之前,多核支持较弱:5.1可利用4个核:5.5可利用24核:5.6可利用64个核:每个连接对应一个线程,每个并发query只能使用一个核 mysql对内存的利用特 ...

  10. centos7安装redis 并配置在后台启动

    官网  https://redis.io/download 先进入 目录 /usr/local 1 下载文件包 $ wget http://download.redis.io/releases/red ...