首先,对于传统的table合并相同数据的单元格,使用elementUI官方提供的方法,只要稍微修改一下就可以使用,但是对于具有折叠功能的表格,上述方法就不适用了。
本人经过多次尝试,才发现使用传统的合并单元格的方法会产生各种问题,言归正传,后面会介绍遇到的各种问题。
**问题:使用方法完成具有折叠功能的table表格的合并单元格**

说道这里,我不得不提出一个问题,
(1)本节中使用的是树形数据的折叠,还有一个是懒加载。
如果使用懒加载,在获取数据后,整个table的结构就会产生变化,分页就会出现问题(内容错乱)。
采用树形数据时,加载数据的时候就可以确定table的结构。在使用分页的函数就没有问题了。
第二个问题就是怎样分页的问题
(2) 将所有的树形数据整理成普通table数据格式(没有数据折叠)这样在使用elementUI中的分页就可以了。加载分页就可以达到分页的效果。
具体方法如下:
//table中合并单元格
//把后台传过来的树形结构的数据变为以为List
getArray(tree, list){
for( let node of tree) {
list.push({
id: node.id,
ZY: node.ZY ? node.ZY : null,
name: node.name ? node.name : null,
fig_id: node.fig_id ? node.fig_id : null
})
if(node.children != null) {
this.getArray(node.children, list);
}
}
// console.log(tree);
// console.log("list:" + list);
},
//获取需要合并的数据的相同项(分页函数)
getSpanArr(data) {
for(var i = 0; i < data.length; i++) {
if (i === 0) {
this.spanArr.push(1);
this.pos = 0;
} else {
//判断当前元素与上一个元素是否相同
if (data[i].name === data[i-1].name) {
this.spanArr[this.pos] += 1;
this.spanArr.push(0);
} else {
this.spanArr.push(1);
this.pos = i;
}
}
}
// console.log("合并的数组:" + this.spanArr);
},
//执行分页
objectSpanMethod({ row, column, rowIndex, columnIndex }) {
if(columnIndex==1){
var _row = this.spanArr[rowIndex];
var _col = _row > 0 ? 1 : 0;
return { // [0,0] 表示这一行不显示, [2,1]表示行的合并数
rowspan: _row,
colspan: _col
}
}
},
上面就是相关函数,有问题请留言,一起进步交流。
版权声明:本文为weixin_42965737原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。