el-table序号合并
时间: 2023-11-24 22:51:08 浏览: 66
根据提供的引用内容,el-table序号合并的实现方法如下:
1. 在 el-table-column 中添加 :span-method 属性,并将其值设置为一个函数,该函数接收两个参数:row 和 column。其中,row 表示当前行的数据,column 表示当前列的数据。该函数需要返回一个包含两个元素的数组,第一个元素表示该单元格需要合并的行数,第二个元素表示该单元格需要合并的列数。
2. 在该函数中,通过循环数据源数据获取该列需要合并的行数。具体实现方法如下:
```javascript
arraySpanMethod({ row, column, rowIndex, columnIndex }) {
if (columnIndex === 0) {
const rowspan = this.getRowspan(row, column, rowIndex, columnIndex);
if (rowspan === 0) {
return [1, 0];
} else {
return [rowspan, 1];
}
}
},
getRowspan(row, column, rowIndex, columnIndex) {
if (rowIndex === 0) {
return 1;
}
const prevRow = this.tableData[rowIndex - 1];
if (row[column.property] === prevRow[column.property]) {
return 0;
} else {
return 1;
}
},
```
其中,getRowspan 函数用于获取该列需要合并的行数,如果当前行的该列数据与上一行的该列数据相同,则返回 0,否则返回 1。
完整代码如下:
```html
<el-table
:data="tableData"
class="table-container"
height="400"
style="width: 100%"
:span-method="arraySpanMethod"
>
<el-table-column width="80" align="center" prop="Nosort" label="序号"></el-table-column>
<el-table-column prop="name" label="姓名"></el-table-column>
<el-table-column prop="age" label="年龄"></el-table-column>
</el-table>
```
```javascript
arraySpanMethod({ row, column, rowIndex, columnIndex }) {
if (columnIndex === 0) {
const rowspan = this.getRowspan(row, column, rowIndex, columnIndex);
if (rowspan === 0) {
return [1, 0];
} else {
return [rowspan, 1];
}
}
},
getRowspan(row, column, rowIndex, columnIndex) {
if (rowIndex === 0) {
return 1;
}
const prevRow = this.tableData[rowIndex - 1];
if (row[column.property] === prevRow[column.property]) {
return 0;
} else {
return 1;
}
},
```
阅读全文