首页 > 其他分享 >layui table 动态生成复杂表头 及 数据绑定问题

layui table 动态生成复杂表头 及 数据绑定问题

时间:2022-12-28 17:49:02浏览次数:43  
标签:columnArr layui workTypeId WorkTypeId 表头 var table data page

table复杂表头 

下面将是我们要实现的效果

下面是后台返回的数据 

 

 

 复杂表头重要的属性:

rowspan
colspan

需要注意的是循环生成表头时,循环时不会执行templet里面的代码,在table渲染时才会执行,如果直接在templet里用变量,那么取到的数据是有问题的,需要借助属性来避免这个问题。

由于table的数据是提前生成的,所以数据分页时有问题,不能展示数据实际总条数,目前还没有想到好办法,暂时先用了laypage实现了分页的效果

loadTableData(1, 10);
//初始化表格
function bindTable(columnArr,data,page,limit) {
    table.render({
        elem: '#dataTable'
        , where: { page: page, limit: limit }
        , height: 'full-155'
        , cols: columnArr
        , data: data
        , page: false
       
    });
}
//初始化分页
function initPage(count) {
    laypage.render({
        elem: 'demo1'
        , count: count //数据总数,从服务端得到
        , jump: function (obj, first) {
            //首次不执行
            if (!first) {
                loadTableData(obj.curr, obj.limit);
            }
        }
    });

}
var isInitPage = false;
//生成表头
function loadTableData(page,limit) {
    var columnArr = [];
    columnArr[0] = [
        { fixed: 'left', field: 'CityName', title: '城市', align: 'center', rowspan: 2, width: 200},
        { fixed: 'left', field: 'OrganName', title: '机构', align: 'center', rowspan: 2 ,width:200},
    ];
    columnArr[1] = [];
    $.ajax({
        url: "/Account/GetTGLs",
        type: 'post',
        dataType: "json",
        data: { trainTargetId: 1, page: page, limit: limit },
        success: function (json) {
            var data = json.workTypes;
            for (var i = 0; i < data.length; i++) {
                var workType = data[i];
                columnArr[0].push({ field: 'WorkTypeName', title: data[i].Name, align: 'center', colspan: 3 });
                columnArr[1].push({
                    field: 'TotalCount', title: '实考人数', align: 'center', data_workTypeId: workType.WorkTypeId, width: 100, templet: function (row) {
                        var workTypeId = $(this)[0].data_workTypeId;
              //注意:workType.WorkTypeId 此处是没办法直接取workType.WorkTypeId的。如果这样写,最终取到的数据将都是当前行最后一条的数据,只能借助属性进行操作
              var workTypeData = row.Examinations.find(w => w.WorkTypeId == workTypeId); return `${workTypeData.TotalCount}`; } 
          });
          columnArr[1].push({
            field: 'PassCount', title: '通过人数', align: 'center', data_workTypeId: workType.WorkTypeId, width: 100, templet: function (row) {
               var workTypeId = $(this)[0].data_workTypeId; var workTypeData = row.Examinations.find(w => w.WorkTypeId == workTypeId);
               return `${workTypeData.PassCount}`; }
            });
          columnArr[1].push({
            field: 'PassRate', title: '通过率', align: 'center', data_workTypeId: workType.WorkTypeId, width: 100, templet: function (row) {
              var workTypeId = $(this)[0].data_workTypeId; var workTypeData = row.Examinations.find(w => w.WorkTypeId == workTypeId);
               return `${workTypeData.PassRate}`; }
            });
        }
        bindTable(columnArr, json.data, page, limit);
        if (!isInitPage) { isInitPage = true; initPage(json.count); }
    }
  })
}

 

标签:columnArr,layui,workTypeId,WorkTypeId,表头,var,table,data,page
From: https://www.cnblogs.com/mtjj/p/17010817.html

相关文章

  • jquery dataTable 设置固定列
    引入js<scriptsrc="https://cdn.datatables.net/fixedcolumns/4.0.2/js/dataTables.fixedColumns.min.js"></script>js代码://初始化页面,加载供应商数据dataTable......
  • layui自定义列表文件超链接
    <scripttype="text/html"id="operator_bar_files">{{#layui.each(d.files,function(index,item){}}{{#if(index<=1){}}<ahref="{{window.fil......
  • CompletableFuture 使用总结
    转载请注明出处:1.Future使用对比Future表示一个异步计算的结果。它提供了isDone()来检测计算是否已经完成,并且在计算结束后,可以通过get()方法来获取计算结果。在异步......
  • IfcTableRow
    IfcTableRow实体定义IfcTableRow包含IfcTable中单行的数据。 限制:为了向后兼容,IfcTable引用的所有IfcTableRow对象应具有相同数量的行单元格。实际单元格数应取自该表......
  • 在TableViewer中如何给表格的单元格增加其他组件的编辑功能
    我想实现在JFace/SWT下的TableViewer中的单元格中能添加一些组件比如Button,Text,Label的功能,我查了一下,JFace本身已经实现了ComboBoxCellEditor,TextCellEditor,CheckboxCellE......
  • layui 滚动条样式
    /*设置滚动条的样式*/::-webkit-scrollbar{width:6px;}/*外层轨道*/::-webkit-scrollbar-track{-webkit-box-shadow:inset006pxrgba(255,0,......
  • CompletableFuture
    CompletableFutureFutureFuture接口(FutureTask实现类)定义了操作异步任务执行一些方法,如获取异步任务的执行结果、取消任务的执行、判断任务是否被取消、判断任务执行......
  • 【数据库数据恢复】oracle数据库执行truncate table后怎么恢复数据?
    数据库恢复环境:操作系统:windowsserver;数据库:win_oracle_x64。数据库故障&分析:oracle数据库误truncate table,备份无法使用。oracle数据库误操作导致数据丢失是比较常......
  • 查看alter table 进度
    UPDATEperformance_schema.setup_instrumentsSETENABLED='YES'WHERENAMELIKE'stage/innodb/alter%';  selectstmt.SQL_TEXTassql_text,concat(WORK_COMP......
  • Linux防火墙软件 IPtables详解
    注:搬运自微信公众号:马哥Linux运维原作者:Se7en的架构笔记(版权归原作者所有,侵删)连接跟踪(conntrack)连接跟踪是许多网络应用的基础。例如,KubernetesService、ServiceMes......