Element Table 动态合并 添加整行数据
Posted immortalwang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Element Table 动态合并 添加整行数据相关的知识,希望对你有一定的参考价值。
效果如图所
添加整行数据,前面几列还是合并状态
直接上代码
1 // 获取列表, 2 getTableDataList() 3 this.tableData3 = [ 4 5 all: "a1", 6 name: "名字1", 7 value1: "b1", 8 value2: 1, 9 value3: "2017年-10月" 10 , 11 12 all: "a1", 13 name: "名字2", 14 value1: "b2", 15 value2: "2", 16 value3: "2017年-10月" 17 , 18 ] 19 this.getSpanArr(this.tableData3); 20 this.getSpanArrOne(this.tableData3); 21 , 22 //前行row、当前列column、当前行号rowIndex、当前列号columnIndex四个属性 23 cellMerge( row, column, rowIndex, columnIndex ) 24 let length = this.tableData3.length; 25 //第0列比较特殊,单独合并 26 if (columnIndex === 0) 27 const _row = this.spanArrOne[rowIndex]; 28 const _col = _row > 0 ? 1 : 0; 29 return 30 rowspan: _row, 31 colspan: _col 32 ; 33 34 //1 2列进行合并 35 if (columnIndex === 1 || columnIndex === 2) 36 const _row = this.spanArr[rowIndex]; 37 const _col = _row > 0 ? 1 : 0; 38 return 39 rowspan: _row, 40 colspan: _col 41 ; 42 43 , 44 //1 2 列合并的数据 45 getSpanArr(data) 46 this.spanArr = [] 47 for (var i = 0; i < data.length; i++) 48 if (i === 0) 49 this.spanArr.push(1); 50 this.pos = 0; 51 else 52 // 判断当前元素与上一个元素是否相同 53 if (data[i].name === data[i - 1].name) 54 this.spanArr[this.pos] += 1; //需要合并的行数 55 this.spanArr.push(0); //新增被合并的行 56 else 57 this.spanArr.push(1); 58 this.pos = i; //新的需要合并的第几行数 59 60 61 62 , 63 //0列合并的数据 64 getSpanArrOne(data) 65 this.spanArrOne = [] 66 for (var i = 0; i < data.length; i++) 67 if (i === 0) 68 this.spanArrOne.push(1); 69 this.posOne = 0; 70 else 71 this.spanArrOne[this.posOne] += 1; //需要合并的行数 72 this.spanArrOne.push(0); //新增被合并的行 73 74 75 , 76 // 添加整行 77 addRow(index,row) 78 this.tableData3.splice(index+1,0,row) 79 this.getSpanArr(this.tableData3); 80 this.getSpanArrOne(this.tableData3); 81 ,
需要注意的是,每次添加都要重新计算需要合并的行数
以上是关于Element Table 动态合并 添加整行数据的主要内容,如果未能解决你的问题,请参考以下文章
element-UI table动态增加列,动态增加行,动态合并行。选择编辑表头行数据
web前端-vue element UI el-table,el-table-column表格添加行点击事件