关于ElementUI中的table合并行和列实例详解以及遇到的问题

首先,对于传统的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版权协议,转载请附上原文出处链接和本声明。