layui-table-merge
layui-table-merge copied to clipboard
在复杂表头的情况下有问题 展示不正确
在复杂表头的情况下有问题 展示不正确
最好附上截图和代码
我的是四级表头,合并指定列的时候其他列也合并了,
,求大佬指教
{ field: 'EAS_ENTERPRISE_TYPE', title: '企业分类', unresize: true, rowspan: 4, align: 'center', width: 100, fixed: true, merge:'EAS_ENTERPRISE_TYPE', // merge: true, },
遇到了一样的问题,请问如何解决
我解决了,前面增加响应列,然后, hide:true
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;
}
}
})`
另一种实现方式 修改 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;
}
}
});
复杂表头的忘了维护到这个项目了, 效果:http://soultable.yelog.org/#/zh-CN/component/merge/header 可以在 https://github.com/yelog/layui-soul-table 这个项目中进行下载
@xiaojinsb 我的是成功的。Σ( ° △ °|||)︴
@wzfxue 可是是表格写法不一吧