bootstrap table动态加载列表头及数据

首先需要后端返回的数据格式为:(后端代码忽略,根据各自情况返回,数据结构跟下图差不多)

注意 表头数据:titles和表数据rows的格式

titles的field就是rows的key,有多少个titles,rows中的一个数据就有多少个对应的field与其对应

前端代码:

            function initTable(){
                        layer.msg('数据加载中,请稍等...', {
                            icon: 16
                            ,shade: [0.3, '#cdcdcd']
                            ,skin:'demo-class'
                            ,time:0
                            
                        });
                        $.post('/XXXe',{参数},function(json){
                            //这里调用初始化表头
                            composeCol(json.titles);
                            
                            $('#orderHeaderTable').bootstrapTable({
                                //url: 'showOrderList',
                                
                                toolbar:'#toolbar',
                                
                                striped: true,                      //是否显示行间隔色
                                    
//                              cache: false,                       //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
                                    
                                sortable: true,                     //是否启用排序
                                
                                sortOrder: "desc",                   //排序方式
                                
                                sidePagination: "client",           //分页方式:client客户端分页,server服务端分页(*)
                                
                                pageNumber: 1,                       //初始化加载第一页,默认第一页
                                
                                pageSize: 20,                       //每页的记录行数(*)
                                  
                                pageList: [20, 35, 50, 100],  
                                                
                                paginationPreText: "上一页",           
                                
                                paginationNextText:"下一页",
                                
                                pagination: true,                   //是否显示分页(*)
                                
                                search: true,                       //是否显示表格搜索,此搜索是客户端搜索,不会进服务端,所以,个人感觉意义不大
                                                    
                                showColumns: true,                  //是否显示所有的列
                                
                              
                                
                                minimumCountColumns: 2,             //最少允许的列数
                                
                                clickToSelect: true,                //是否启用点击选中行
                                
                                uniqueId: "id",                     //每一行的唯一标识,一般为主键列
                                showFooter : true, 
                                exportDataType: "all",   //导出类型   basic' 当前页 'all' 所有数据  'selected'.选中的数据
                                
                                undefinedText:"",
                                
                                multipleSearch:true,
                                
                                queryParams:function() {
                                    return {
                                    };
                                },

                                columns: clos
                                
                            });
                            
                            //初始化加载按钮
                            $('#orderHeaderTable').bootstrapTable("load" , json.rows);
                            
                            layer.closeAll();
                        });

                    
                    }
  var clos = [];
  var colIndex=0;
  var indexs=0;
  var boot=false; 
//表头初始化     
 function composeCol(titles){
            /* 	 clos.push({field:'state',checkbox:true,}); */
                 clos.push({field:'exnum',title:'表头1',footerFormatter:"统计",width:120,falign:"center",sortable:true});
                 clos.push({field:'exhibitor',title:'表头2',width:"10%",falign:"center",sortable:true});
            	if(titles.length>2){
                       for (var int = 0; int < titles.length; int++) {
                           clos.push({field:titles[int].field,title:titles[int].title,align:"center",visible:titles[int].visible,sortable:true});
                       }
                       return clos;
            	}else{
            		return clos;
            	}
         
            }

还有一步就是每次请求数据前都要将boostraptable销毁再初始化:

$("#orderHeaderTable").bootstrapTable('destroy');

 

动态加载表头,你可以使用Bootstrap的JavaScript插件DataTable。首先,你需要在页面中引入DataTable的CSS和JavaScript文件。然后,在HTML中创建一个空的table元素,并使用JavaScript代码来动态生成表头和表格内容。 以下是一个简单的示例代码: ```html <!DOCTYPE html> <html> <head> <link rel="stylesheet" href="https://cdn.datatables.net/1.10.21/css/jquery.dataTables.min.css"> </head> <body> <table id="myTable" class="display"> <thead> <tr> <th>Column 1</th> <th>Column 2</th> <th>Column 3</th> </tr> </thead> <tbody> </tbody> </table> <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script> <script src="https://cdn.datatables.net/1.10.21/js/jquery.dataTables.min.js"></script> <script> $(document).ready(function() { var table = $('#myTable').DataTable({ "ajax": "data.json", "destroy": true }); // 动态加载表头 var columns = []; $.getJSON("columns.json", function(data) { $.each(data, function(key, val) { columns.push({"data": key, "title": val}); }); table.destroy(); table = $('#myTable').DataTable({ "ajax": "data.json", "columns": columns }); }); }); </script> </body> </html> ``` 在上面的示例中,我们使用jQuery和DataTable插件来创建一个表格,表头是静态生成的。我们使用"data.json"文件来加载表格数据,并使用"columns"选项来定义表头。在这个示例中,我们定义了三列,分别是"Column 1"、"Column 2"和"Column 3"。 我们还使用了另一个JSON文件"columns.json"来动态加载表头。在这个文件中,我们定义了每一列的名称。通过使用jQuery的getJSON方法,我们可以异步加载这个文件,并根据返回的数据动态生成表头。注意,我们需要在表格重新初始化之前先销毁表格实例。 希望这个示例能对你有所帮助!
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

未名胡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值