layui-table-merge icon indicating copy to clipboard operation
layui-table-merge copied to clipboard

在复杂表头的情况下有问题 展示不正确

Open king-jw opened this issue 5 years ago • 11 comments

在复杂表头的情况下有问题 展示不正确

king-jw avatar Mar 28 '19 07:03 king-jw

a

king-jw avatar Mar 28 '19 07:03 king-jw

最好附上截图和代码

yelog avatar Mar 29 '19 07:03 yelog

我的是四级表头,合并指定列的时候其他列也合并了, image,求大佬指教

loveYu1314 avatar Apr 19 '19 03:04 loveYu1314

{ field: 'EAS_ENTERPRISE_TYPE', title: '企业分类', unresize: true, rowspan: 4, align: 'center', width: 100, fixed: true, merge:'EAS_ENTERPRISE_TYPE', // merge: true, },

loveYu1314 avatar Apr 19 '19 03:04 loveYu1314

遇到了一样的问题,请问如何解决

franktam avatar May 13 '19 08:05 franktam

我解决了,前面增加响应列,然后, hide:true

franktam avatar May 13 '19 08:05 franktam

render方法中加入如下( //多表头处理): var tableBox = $(myTable.elem).next().children('.layui-table-box'), $main = $(tableBox.children('.layui-table-body').children('table').children('tbody').children('tr').toArray().reverse()), $fixLeft = $(tableBox.children('.layui-table-fixed-l').children('.layui-table-body').children('table').children('tbody').children('tr').toArray().reverse()), $fixRight = $(tableBox.children('.layui-table-fixed-r').children('.layui-table-body').children('table').children('tbody').children('tr').toArray().reverse()), cols = myTable.cols[0], mergeRecord = {}; //多表头处理 if(myTable.cols.length>0){ var __cols = []; layui.table.eachCols(myTable.id, function(idx,item){ __cols.push(item); }, myTable.cols); cols = __cols; }

$main.each的地方修改为: `$main.each(function (i) {

            for (var item in mergeRecord) {
                if (i==$main.length-1 || isMaster(i, item)) {
                    // $(this).children('[data-key$="-'+item+'"]').attr('rowspan', mergeRecord[item].rowspan).css('position','static');
                    //$fixLeft.eq(i).children('[data-key$="-'+item+'"]').attr('rowspan', mergeRecord[item].rowspan).css('position','static');
                    //$fixRight.eq(i).children('[data-key$="-'+item+'"]').attr('rowspan', mergeRecord[item].rowspan).css('position','static');
                    $(this).children('[data-field="'+mergeRecord[item].mergeField+'"]').attr('rowspan', mergeRecord[item].rowspan).css('position','static');
                    $fixLeft.eq(i).children('[data-field="'+mergeRecord[item].mergeField+'"]').attr('rowspan', mergeRecord[item].rowspan).css('position','static');
                    $fixRight.eq(i).children('[data-field="'+mergeRecord[item].mergeField+'"]').attr('rowspan', mergeRecord[item].rowspan).css('position','static');
                    mergeRecord[item].rowspan = 1;
                } else {
                    // $(this).children('[data-key$="-'+item+'"]').remove();
                    // $fixLeft.eq(i).children('[data-key$="-'+item+'"]').remove();
                    // $fixRight.eq(i).children('[data-key$="-'+item+'"]').remove();
                    $(this).children('[data-field="'+mergeRecord[item].mergeField+'"]').remove();
                    $fixLeft.eq(i).children('[data-field="'+mergeRecord[item].mergeField+'"]').remove();
                    $fixRight.eq(i).children('[data-field="'+mergeRecord[item].mergeField+'"]').remove();
                    mergeRecord[item].rowspan +=1;
                }
            }
        })`

wzfxue avatar Jul 25 '19 07:07 wzfxue

另一种实现方式 修改 cols = myTable.cols[0], mergeRecord = {}; 为 cols = myTable.cols, mergeRecord = {};

下面的for和each修改为

for (var i = 0; i < colsArry.length; i++) {
                var cols = colsArry[i];
                for (var j = 0; j < cols.length; j++) {
                    var item = cols[j], field = item.field;
                    if (field !== undefined) {
                        var mergeField = [field];
                        if (item.merge) {
                            if (item.merge !== true) {
                                if (typeof item.merge == 'string') {
                                    mergeField = [item.merge]
                                } else {
                                    mergeField = item.merge
                                }
                            }
                            mergeRecord[field] = {mergeField: mergeField, rowspan: 1, dataKey: '-' + i + '-' + j};
                        }
                    }
                }
            }

            $main.each(function (i) {
                for (var item in mergeRecord) {
                    if (i == $main.length - 1 || isMaster(i, item)) {
                        $(this).children('[data-key$="' + mergeRecord[item].dataKey + '"]').attr('rowspan', mergeRecord[item].rowspan).css('position', 'static');
                        $fixLeft.eq(i).children('[data-key$="' + mergeRecord[item].dataKey + '"]').attr('rowspan', mergeRecord[item].rowspan).css('position', 'static');
                        $fixRight.eq(i).children('[data-key$="' + mergeRecord[item].dataKey + '"]').attr('rowspan', mergeRecord[item].rowspan).css('position', 'static');
                        mergeRecord[item].rowspan = 1;
                    } else {
                        $(this).children('[data-key$="' + mergeRecord[item].dataKey + '"]').remove();
                        $fixLeft.eq(i).children('[data-key$="' + mergeRecord[item].dataKey + '"]').remove();
                        $fixRight.eq(i).children('[data-key$="' + mergeRecord[item].dataKey + '"]').remove();
                        mergeRecord[item].rowspan += 1;
                    }
                }
            });

moeexx avatar Aug 14 '19 09:08 moeexx

复杂表头的忘了维护到这个项目了, 效果:http://soultable.yelog.org/#/zh-CN/component/merge/header 可以在 https://github.com/yelog/layui-soul-table 这个项目中进行下载

yelog avatar Aug 14 '19 09:08 yelog

image @xiaojinsb 我的是成功的。Σ( ° △ °|||)︴

wzfxue avatar Aug 14 '19 09:08 wzfxue

@wzfxue 可是是表格写法不一吧

moeexx avatar Aug 14 '19 10:08 moeexx