Element-Plus表格:Table自定义合并行数据的最佳实践

news/2025/2/12 4:43:32/文章来源:https://www.cnblogs.com/codemz/p/18580208

“ 知行合一 ” —— 王阳明

在开发项目中,我们时常会用到表格,许多需求可能会要求自定义特定的行或列。
接下来,我们将探讨在实际开发中如何应对这一挑战。

本文案例采用的技术:

名称 版本
Vue3 ^3.5.12
element-plus ^2.8.8

知识点

我们先来复习下2个知识点,来自element-plus文档 table:

1、自定义表头

通过设置 slot 来自定义表头。(只贴出重点代码)

<el-table :data="filterTableData" style="width: 100%"><el-table-column label="Date" prop="date" /><el-table-column label="Name" prop="name" /><el-table-column align="right"><template #header><el-input v-model="search" size="small" placeholder="Type to search" /></template><template #default="scope"><el-button size="small" @click="handleEdit(scope.$index, scope.row)">Edit</el-button><el-buttonsize="small"type="danger"@click="handleDelete(scope.$index, scope.row)">Delete</el-button></template></el-table-column></el-table>

其中可以看出,通过 <template #header> 自定义表头,<template #default="scope"> 自定义内容。

2、合并行或列

多行或多列共用一个数据时,可以合并行或列。
通过给 table 传入span-method方法可以实现合并行或列, 方法的参数是一个对象,里面包含当前行 row、当前列 column、当前行号 rowIndex、当前列号 columnIndex 四个属性。 该函数可以返回一个包含两个元素的数组,第一个元素代表 rowspan,第二个元素代表 colspan。 也可以返回一个键名为 rowspan 和 colspan 的对象。

 <el-table:data="tableData":span-method="arraySpanMethod"borderstyle="width: 100%"><el-table-column prop="id" label="ID" width="180" /><el-table-column prop="name" label="Name" /><el-table-column prop="amount1" sortable label="Amount 1" /><el-table-column prop="amount2" sortable label="Amount 2" /><el-table-column prop="amount3" sortable label="Amount 3" /></el-table><script lang="ts" setup>
// 省略其他代码...
const arraySpanMethod = ({row,column,rowIndex,columnIndex,
}: SpanMethodProps) => {if (rowIndex % 2 === 0) {if (columnIndex === 0) {return [1, 2]} else if (columnIndex === 1) {return [0, 0]}}
}
</script>

实战开发

假设一个需求:在最后一行新增一条自定义的行数据。
结合上述2个知识点,我们可以进行改进:

<template><el-table :data="tableData" :span-method="arraySpanMethod" border style="width: 500px"><el-table-column prop="id" label="ID" width="100"><template #default="scope"><span v-if="scope.$index === tableData.length - 1"><span>是否确认信息:</span><el-radio-group v-model="scope.row.confirmFlag"><el-radio :value="true">确认</el-radio><el-radio :value="false">未确认</el-radio></el-radio-group></span><template v-else>{{ scope.row.id }}</template></template></el-table-column><el-table-column prop="name" label="姓名" /><el-table-column prop="age" label="年龄" /></el-table>
</template><script setup lang="ts">
import type { TableColumnCtx } from 'element-plus'interface User {id?: stringname?: stringage?: numberconfirmFlag?: boolean
}interface SpanMethodProps {row: Usercolumn: TableColumnCtx<User>rowIndex: numbercolumnIndex: number
}const arraySpanMethod = ({ row, column, rowIndex, columnIndex }: SpanMethodProps) => {// 最后一行if (rowIndex === tableData.length - 1) {// [1,3] 占一行三列return [1, 3]}
}const tableData: User[] = [{id: '1',name: 'Tom1',age: 20,},{id: '2',name: 'Tom2',age: 30,},{id: '3',name: 'Tom3',age: 40,},// 新增一条自定义的数据{confirmFlag: true,},
]
</script><style scoped></style>

结语

根据文档中所提供的2个知识点,可以结合进行其他自定义操作。
还有其他好玩的操作,小伙伴可以留言哈~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/844718.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高级语言程序第九次个人作业

这个作业属于哪个课程:https://edu.cnblogs.com/campus/fzu/2024C 这个作业要求在哪里:https://edu.cnblogs.com/campus/fzu/2024C/homework/13303 学号:102400128 姓名:吴俊衡 14.17.3 问题无4 问题无5 问题无10 问题对于结构数组的指针运用不太熟练和结构数组的输入不太熟…

高级语言程序设计课程个人第九次作业

这个作业属于哪个课程:https://edu.cnblogs.com/campus/fzu/2024C 这个作业要求在哪里:https://edu.cnblogs.com/campus/fzu/2024C/homework/13311 学号:102400127 姓名:王子涵 复习题q3q4q5q10q11练习 q3q4q5难

CF2034 A-E题解

A. King Keykhosrows Mystery 题意可以转化为存在 \(k_1,k_2\) 使得 \(m=a\times k_1+n = b\times k_2 +n\)。消去余数 \(n\) 得到 \(a\times k_1=b\times k_2\),即 \(a,b\) 的公倍数。所以最小的 \(m\) 就是 \(a,b\) 的最小公倍数,余数为 0。最小公倍数的计算方法是 \(\text…

2024-2025-1(20241321)《计算机基础与程序设计》第十周学习总结

这个作业属于哪个课程 <班级的链接>(2024-2025-1-计算机基础与程序设计)这个作业要求在哪里 <作业要求的链接>(2024-2025-1计算机基础与程序设计第十周作业)这个作业的目标 <深刻学习C语言,反思一周学习,温故知新>作业正文 ... 本博客链接https://www.cn…

MonoCD:具有互补深度的单眼3D物体检测

MonoCD:具有互补深度的单眼3D物体检测单眼3D对象检测因其能够以低成本,从单个图像中准确获得对象3D定位,而引起了广泛关注。由于2D到3D映射的不适定性,深度估计是单目3D对象检测的一个重要,但具有挑战性的子任务。许多方法探索多个局部深度线索,如物体高度和关键点,然后…

【牛客训练记录】华为杯2024年广东工业大学新生赛(同步赛)

训练情况赛后反思 组合数学还得加练,J题奇妙的乘法逆元预处理,开个unordered_map记忆化就过了?!,E题太头铁了,异或不算就直接交,F题又是急到没取模就直接交。 A题 字符串 Tomori 后面补上 Haruhikage。 #include <bits/stdc++.h> // #define int long long #defin…

攻防世界-baigeiRSA

一、题目 给了如下两个文件二、解题 1、查看代码发现就是简单的RSA加密算法,仔细分析一下发现flag就是明文,而要获得flag就要解密密文,但是代码中只提供了e。于是又去out文件翻了一下,常使用记事本打开,发现n和c已经给出,由于n的位数只有78个字符,可以尝试暴力分解因数2…

【TIA Portal V19软件下载与安装教程】

1、安装包 「TIA Portal V19(64bit).rar」 链接:https://pan.quark.cn/s/388931745834 提取码:VqMr 2、安装教程(建议关闭杀毒软件和系统防护) 1) 下载并解压安装包,右击执行NoRestart.bat文件2) 弹窗后,按任意键退出3) 安装Portal V19,管理员方式运…

《智能汽车传感器:原理设计应用》新书推荐

《智能汽车传感器:原理设计应用》新书推荐 由化学工业出版社资深编辑张海丽老师负责策划编辑。本书在京东、淘宝天猫、当当网上均有销售京东:https://search.jd.com/Search?keyword=%E6%99%BA%E8%83%BD%E6%B1%BD%E8%BD%A6%E4%BC%A0%E6%84%9F%E5%99%A8%EF%BC%9A%E5%8E%9F%E7%…

38. html_02

1. 标签的id属性和class属性 id 用于精确查找某个标签。 类似于标签的唯一标识符,用于在同一个页面上唯一标识一个特定的元素。每个id值在整个文档中都必须是唯一的,不能重复使用。通过id值,可以在JavaScript或CSS中引用特定标签,并对其进行操作或样式化。 class 类似于面向…

高级语言程序设计课程第九次个人作业(102400106刘鑫语)

这个作业属于哪个课程:https://edu.cnblogs.com/campus/fzu/2024C/ 这个作业要求在哪里: https://edu.cnblogs.com/campus/fzu/2024C/homework/13311 学号:102300106 姓名:刘鑫语 14.17.3;14.17.4 结构模板和数组,没有什么问题 14.17.5一开始定义days函数中试图访问month…