“ 知行合一 ” —— 王阳明

在开发项目中,我们时常会用到表格,许多需求可能会要求自定义特定的行或列。

接下来,我们将探讨在实际开发中如何应对这一挑战。

本文案例采用的技术:

名称 版本
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-button
size="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"
border
style="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?: string
name?: string
age?: number
confirmFlag?: boolean
} interface SpanMethodProps {
row: User
column: TableColumnCtx<User>
rowIndex: number
columnIndex: 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个知识点,可以结合进行其他自定义操作。

还有其他好玩的操作,小伙伴可以留言哈~

Element-Plus表格:Table自定义合并行数据的最佳实践的更多相关文章

  1. CKEDITOR 4.6.X 版本 插件 弹出对话框 Dialog中 表格 Table 自定义样式Style 问题

    项目开发过程中,发现CKEDITOR 插件的弹出框 内 如果跟据项目需要写表格(table tr td),表格的边框等属性会被 CKEDITOR的清除或覆盖,导致表格很难看. 问题关键: 插件弹出框d ...

  2. 基于Vue的UI框架element el-table表格的自定义排序

    html部分: <el-table-column prop="phoneCache" label="手机缓存包编号" align="center ...

  3. 当Parallel遇上了DI - Spring并行数据聚合最佳实践

    分析淘宝PDP 让我们先看个图, Taobao的PDP(Product Detail Page)页. 打开Chrome Network面板, 让我们来看taobao是怎么加载这个页面数据的. 根据经验 ...

  4. 封装一个优雅的element ui表格组件

    现在做后台系统用vue + elementUI 的越来越多,那element ui的 el-table 组件肯定也离不开.虽然element ui的table组件很好.但是表格和分页是分离的.每次写表 ...

  5. Element UI表格组件技巧:如何简洁实现跨页勾选、跨页统计功能

    业务场景 在使用Element UI的Table组件时,常常面对这样的业务需求: 表格数据的每一项都要提供勾选框,当切换分页时,能够记忆所有页面勾选的数据,以实现批量提交不同页面勾选数据的功能.并且, ...

  6. (Element UI 组件 Table)去除单元格底部的横线

    Element UI 组件 Table 有一个属性 border,添加它可以增加纵向边框,但是无法控制横线边框,因此即使是最简单的 el-table,也会包含一个底部横线. 这个底部横线其实是一个 b ...

  7. 152-技巧-Power Query 快速合并文件夹中表格之自定义函数 TableXlsxCsv

    152-技巧-Power Query 快速合并文件夹中表格之自定义函数 TableXlsxCsv 附件下载地址:https://jiaopengzi.com/2602.html 一.背景 在我们使用 ...

  8. jQuery动态对表格Table进行添加或删除行以及修改列值操作

    jQuery,不仅可以以少量的代码做很多操作,而且兼容性好(各种浏览器,各种版本). 下面用jQuery动态对表格Table进行添加或删除行以及修改列值操作 1.jQuery代码 <script ...

  9. BootStrap入门教程 (二) :BASE CSS(排版(Typography),表格(Table),表单(Forms),按钮(Buttons))

    上讲回顾:Bootstrap的手脚架(Scaffolding)提供了固定(fixed)和流式(fluid)两种布局,它同时建立了一个宽达940px和12列的格网系统. 基于手脚架(Scaffoldin ...

  10. html表格table设置边框

    对于很多初学HTML的人来说,表格<table>是最常用的标签了,但对于表格边框的控制,很多初学者却不甚其解. 一般我们用表格的时候总会给它个border属性,比如:<table b ...

随机推荐

  1. ServiceMesh 1:大火的云原生微服务网格,究竟好在哪里?

    1 关于云原生 云原生计算基金会(Cloud Native Computing Foundation, CNCF)的官方描述是: 云原生是一类技术的统称,通过云原生技术,我们可以构建出更易于弹性扩展. ...

  2. JavaScript Library – Lit

    前言 我写过一篇关于 Lit 的文章,Material Design, Angular Material, MDC, MWC, Lit 的关系. 如今 material-web MWC 已经发布 1. ...

  3. Nuxt Kit API :路径解析工具

    title: Nuxt Kit API :路径解析工具 date: 2024/9/22 updated: 2024/9/22 author: cmdragon excerpt: 摘要:本文介绍了Nux ...

  4. OpenGL和OpenCL区别

    1.OpenGL用于图形渲染程序:OpenCL用于复杂的计算.他们都是由Khronos管理并使用C语言编译. 2.OpneGL使编程能够进行图形操作:OpenCL使编程能够在多个处理器中进行计算. 3 ...

  5. iOS多项选项卡TYTabPagerBar和分页控制器TYPagerController使用小结

    最近做项目的时候,用到了顶部选项卡和底部分页控制器相关的功能.之前做的话都是自己手动封装,通过两个UIScrollView联动来实现.公司同事给推荐了一个封装好的库, TYPagerControlle ...

  6. node.js安装及环境配置基于Windows系统

    node.js安装及环境配置-Windows系统 1. 下载安装包 https://nodejs.org/zh-cn/download/ 根据自己电脑系统及位数选择,我的电脑是Windows系统.64 ...

  7. 最新Sql语句来啦

    创建数据库 CREATE DATABASE 数据库名称; 删除数据库 DROP DATABASE 数据库名称; 创建新表 create table 表名(列 类型 ,列 类型 ,..); 根据已有的表 ...

  8. AutoDarkMode:Win上自动切换深浅模式的工具

    AutoDarkMode是一款Windows上用于根据时间自动切换亮暗主题的工具. 打开后,即可设置根据时间(通常是白天亮晚上暗)自动切换主题(需要软件开机启动). 你也可以在切换颜色主题的同时设置两 ...

  9. 云电脑玩游戏挑选标准,ToDesk实测体验

    大家玩游戏还在攒机吗?与其花费时间精力在组装游戏电脑上,不如用上最近兴起的云电脑软件.无需额外配备硬件设备,旧电脑原地变身成高性能电脑,随时随地享受游戏乐趣. 但市面上众多的云电脑软件,该怎么选择才能 ...

  10. linux环境安装pip

    1.下载pip安装包 https://files.pythonhosted.org/packages/ce/ea/9b445176a65ae4ba22dce1d93e4b5fe182f953df71a ...