关于el-table单元格合并的解决方案

简介: 关于el-table单元格合并的解决方案

el-table单元格合并示例

先看以下代码:

<template><div><el-table      :data="tableData"      :span-method="objectSpanMethod"borderstyle="width: 100%; margin-top: 20px"><el-table-columnprop="id"label="ID"width="180"></el-table-column><el-table-columnprop="name"label="姓名"></el-table-column><el-table-columnprop="amount1"label="数值 1(元)"></el-table-column><el-table-columnprop="amount2"label="数值 2(元)"></el-table-column><el-table-columnprop="amount3"label="数值 3(元)"></el-table-column></el-table></div></template><script>exportdefault {
data() {
return {
tableData: [{
id: '12987122',
name: '王小虎',
amount1: '234',
amount2: '3.2',
amount3: 10        }, {
id: '12987123',
name: '王小虎',
amount1: '165',
amount2: '4.43',
amount3: 12        }, {
id: '12987124',
name: '王小虎',
amount1: '324',
amount2: '1.9',
amount3: 9        }, {
id: '12987125',
name: '王小虎',
amount1: '621',
amount2: '2.2',
amount3: 17        }, {
id: '12987126',
name: '王小虎',
amount1: '539',
amount2: '4.1',
amount3: 15        }]
      };
    },
methods: {
objectSpanMethod({ row, column, rowIndex, columnIndex }) {
if (columnIndex===0) {
if (rowIndex%2===0) {
return {
rowspan: 2,
colspan: 1            };
          } else {
return {
rowspan: 0,
colspan: 0            };
          }
        }
      }
    }
  };
</script>

效果:
image.png

实现el-table单元格合并的方法

从上述示例我们可以知道,el-table绑定:span-method="objectSpanMethod"即可实现合并,objectSpanMethod是处理单元格合并方案的回调函数

需要注意的是,objectSpanMethod是会被循环执行的,整个table有多少单元格,objectSpanMethod就会执行多少次。


objectSpanMethod接收一个object参数,代表当前执行objectSpanMethod的单元格信息,参数解构出四个属性,分别是row(当前行), column(当前列), rowIndex(当前行号,从0开始), columnIndex(当前列号,从0开始)


objectSpanMethod返回一个描述合并单元格的对象或数组,如果是对象,那么对象的rowspan代表要合并的行数,colspan代表要合并的列数;如果是数组,那么数组第一个元素代表要合并的行数,数组第二个元素代表要合并的列数


而且千万千万千万要注意的是,单元格的合并,是从起始位置合并的,而不是从末尾位置合并,意思就是,比如你想要合并3到6行且是第一列的单元格,那么应该从第三行第一列开始合并,按照如下代码进行设置

objectSpanMethod({ row, column, rowIndex, columnIndex }) {
if (columnIndex===0) { // 先判断是不是第一列,只有第一列才执行合并if (rowIndex===2) { // 先判断是不是第三行,只有第三行才执行合并return {
rowspan: 3, // 从起始位置,即第三行开始,执行合并3行colspan: 1, // 从起始位置,即第一列开始,执行合并1列            };
          } else {
return { // 第一列的其他元素不执行合并rowspan: 0, // 为0,不执行合并colspan: 0// 为0,不执行合并            };
          }
        }
      }



目录
相关文章
|
数据处理 对象存储
如何利用 OSS 转换 webp 文件为jpeg
如何利用 OSS 转换 webp 文件为jpeg,OSS 样式使用
2673 1
|
Linux
npm install 报错ERESOLVE unable to resolve dependency tree
npm install 报错ERESOLVE unable to resolve dependency tree
480 0
Element-ui 表格 (Table) 组件中动态合并单元格
Element-ui 表格 (Table) 组件中动态合并单元格
2078 0
Element-ui 表格 (Table) 组件中动态合并单元格
|
存储
el-table分页记录数据
el-table分页记录数据
522 0
|
easyexcel Java UED
SpringBoot中大量数据导出方案:使用EasyExcel并行导出多个excel文件并压缩zip后下载
在SpringBoot环境中,为了优化大量数据的Excel导出体验,可采用异步方式处理。具体做法是将数据拆分后利用`CompletableFuture`与`ThreadPoolTaskExecutor`并行导出,并使用EasyExcel生成多个Excel文件,最终将其压缩成ZIP文件供下载。此方案提升了导出效率,改善了用户体验。代码示例展示了如何实现这一过程,包括多线程处理、模板导出及资源清理等关键步骤。
|
消息中间件 NoSQL Java
Spring Boot整合Redis
通过Spring Boot整合Redis,可以显著提升应用的性能和响应速度。在本文中,我们详细介绍了如何配置和使用Redis,包括基本的CRUD操作和具有过期时间的值设置方法。希望本文能帮助你在实际项目中高效地整合和使用Redis。
1194 2
PowerShell快速修改多个文件的名称
【8月更文挑战第28天】在PowerShell中批量重命名文件可通过以下方法实现:1)使用`Rename-Item`命令逐一重命名;2)通过循环批量处理特定模式的文件名更改;3)利用正则表达式进行复杂模式匹配与替换。操作前请确保验证命令并备份文件。
1892 1
|
JavaScript 前端开发 容器
Vue生成PDF文件攻略:html2canvas与jspdf联手,中文乱码与自动换行难题攻克
Vue生成PDF文件攻略:html2canvas与jspdf联手,中文乱码与自动换行难题攻克
3114 0
|
Java UED
基于SpringBoot自定义线程池实现多线程执行方法,以及多线程之间的协调和同步
这篇文章介绍了在SpringBoot项目中如何自定义线程池来实现多线程执行方法,并探讨了多线程之间的协调和同步问题,提供了相关的示例代码。
5236 0
|
JavaScript
vue element plus Select 选择器
vue element plus Select 选择器
2057 0