Element-plus表格使用总结

这里我使用的是Vue工程进行开发学习,安装需要通过包管理器进行下载

 npm install element-plus --save

然后在main.js中配置文件即可使用,如果在引入index.css时没有提示,无需担心,直接写index.css即可导入样式。 

Table表格

表格用于展示多条解构类似的数据,可对数据进行排序、筛选、对比或其他自定义操作。

当el-table 元素中注入 data 对象数组后,在 el-table-column 中用 prop 属性来对应对象中的键名即可填入数据,用 label 属性来定义表格的列名。可以使用 width 属性来定义列宽。

<template><el-table :data="tableData" style="width: 100%"><el-table-column prop="date" label="Date" width="180" /><el-table-column prop="name" label="Name" width="180" /><el-table-column prop="address" label="Address" /></el-table>
</template><script lang="ts" setup>
const tableData = [{date: '2016-05-03',name: 'Tom',address: 'No. 189, Grove St, Los Angeles',},{date: '2016-05-02',name: 'Tom',address: 'No. 189, Grove St, Los Angeles',},{date: '2016-05-04',name: 'Tom',address: 'No. 189, Grove St, Los Angeles',},{date: '2016-05-01',name: 'Tom',address: 'No. 189, Grove St, Los Angeles',},
]
</script>

斑马纹表格

stripe 可以创建带斑马纹的表格。如果true,表格将会带有斑马纹。

带边框表格

默认情况下,Table组件是不具有竖直方向的边框,如果需要,可以使用border属性,把该属性设置为即可使用。

带状态表格 

可将表格内容highlight显示,方便区分 [成功、信息、警告、危险] 等内容。

可以通过指定Table组件的 row-class-name 属性来为Table 中的某一行添加class,这样就可以自定义每一行的样式了。

首先需要在<style>中添加样式,因为这本质上是通过给tr添加类标签实现的。

<style>.el-table .warning-row {--el-table-tr-bg-color: var(--el-color-warning-light-9);
}
.el-table .success-row {--el-table-tr-bg-color: var(--el-color-success-light-9);
}
</style>

JavaScript函数代码,这里应该用到了解构,所以rowIndex旁边的大括号不能去掉。

const tableRowClassName = ({rowIndex}) => {if (rowIndex === 1) {return 'warning-row'} else if (rowIndex === 3) {return 'success-row'}return ''
}

 之后在<el-table>标签中绑定row-class-name即可。

<el-table :data="userData"   style="width: 1000px"  :row-class-name="tableRowClassName" >

显示溢出工具提示的表格

当内容太长时,它会分成多行。可以使用show-overflow-tooltip 将其保留在一行中。

属性show-overflow-tooltip接受一个布尔值。为true时夺域的内容会在hover时以tooltip的形式显示出来。

特别提醒只有溢出才有提示,不溢出没有。

 固定表头

纵向内容过多时,可选择固定表头。

只要在el-table 元素中定义了height属性,即可实现固定表头的表格,而不需要额外的代码。

固定列 

横向内容过多时,可选择固定列。

固定列需要使用fixed属性,它接受Boolean值。如果为 true,列表将被左侧固定,他还接受传入字符串,left或right,表示左边固定还是右边固定。

 流体高度

当数据量动态变化时,可以为Table设置一个最大高度。

通过设置 max-height 属性为 el-table 指定最大高度,此时若表格所需的高度大于最大高度,则会显示一个滚动条。

 多级表头

数据结构比较复杂的时候,可使用多级表头来展现数据的层次关系。

只需要将el-table-column放置于el-table-column中,你可以实现组头。

注意代表多个列的表头不写prop属性。 

 固定表头

支持固定群表头,组头的属性fixed由最外层el-table-column决定。

单选

选择单行数据时使用色块表示。

Table组件提供了单选的支持,只需要配置 highlight-current-row 属性即可实现单选。 之后由current-change 事件来管理选中时触发的事件,它会传入currentRow, oldCurrentRow。如果需要显示索引,可以增加一列el-table-column, 设置type属性为index即可显示从1开始的索引号。

这个是该方法的非TypeScript语法。 

const signleTableRef = ref()const setCurrent = (row) => {if(signleTableRef.value) {signleTableRef.value.setCurrentRow(row);}

 需要注意在<el-table>标签中添加highlight-current-row,同时在该方法传入的tableData[1]中是和表格绑定的数据。

多选 

也可以选择多行。

在2.8.3之后, toggleRowSelection支持第三个参数 ignoreSelectable 以确定是否忽略可选属性。

实现多选非常简单:手动添加一个el-table-column,设type属性为selection即可;

 <el-table-column type="selection" :selectable="selectable" width="55" />

selectable中row是整个表格的信息,index是表格的索引,可以根据每行中具体的数据进行筛选可选与不可选,这里我表格中有userId这个属性,如果想在其他中表格中使用,需要更改为对应表格数据。

//根据表格数据筛选
const selectable = function(row,index) {  console.log(row,index)return ![13, 8].includes(row.userId)
};  //根据表格索引筛选
const selectable = function(row,index) {  console.log(row,index)return ![0,1].includes(index)
}; 

 排序

对表格进行排序,可快速查找或对比数据。

在列中设置sortable属性即可实现以该列为基准的排序,接受一个Boolean,默认为false。可以通过Table的 default-sort 属性设置默认的排序列和排序顺序。 可以使用 sort-method 或者 sort-by 使用自定义的排序规则。如果需要后端排序,需将sortable 设置为 custom,同时在Table 上监听 sort-change 事件,在事件回调中可以获取当前排序的字段名和排序顺序,从而向接口请求排序后的表格数据。 在本例中,还使用了 formatter 属性,它用于格式化指定列的值,接受一个Function,会传入两个参数: row 和 column,可以根据自己的需求进行处理。

 sortable这个属性是用来给表格上方添加按钮可以选择排序,不会立即对表格进行排序,设置:default-sort可以立即对表格进行排序。

这里没有做任何处理,可以根据自身需求进行更改。 

 筛选

对表格进行筛选,可快速查找到自己想看的数据。

在列中设置filters 和 filter-method 属性即可开启该列的筛选,filters是一个数组,filter-method 是一个方法,它用于决定某些数据是否会显示,会传入三个参数:value,row 和 column。

filter控制筛选是通过表格上方的下拉箭头进行筛选控制的。 

 注意这里用了三个等号,如果值对但数据类型不同不会显示的。

const filterHandler = (value, row, column) => {console.log(value,row,column)const property = column['property']return row[property] === value
}

自定义列模板

自定义列的显示内容,可组合其他组件使用。

通过 slot 可以获取到row、column, $index 和 store(table 内部的状态管理)的数据。

自定义表头

表头支持自定义,通过设置slot来自定义表头。

const search = ref('')
const filterTableData = computed(() =>tableData.filter((data) =>!search.value || data.name.toLowerCase().includes(search.value.toLowerCase()))
)

展开行

当行内容过多并且不想显示横向滚动条时,可以使用Table展开行功能。

通过设置type = “expand” 和 slot 可以开启展开行功能, el-table-column 的模板会被渲染称为展开行的内容,展开行可访问的属性与使用自定义列模板时的slot相同。

 树形数据与懒加载

支持树类型的数据显示。当row中包含children 字段时,被视为树形数据。渲染嵌套数据需要prop的 row-key。 此外,子行数据可以异步加载。设置Table的lazy属性为true 与 加载函数 load。 通过指定row中的 hashChildren 字段来指定哪些行是包含子节点。 children 与 hashChildren 都可以通过 tree-props 配置。

 树形结构需要数据中有children这个属性。

const load = (row, treeNode, resolve) => {  setTimeout(() => {  resolve([  {  id: 31,  date: '2016-05-01',  name: 'wangxiaohu',  address: 'No. 189, Grove St, Los Angeles',  },  {  id: 32,  date: '2016-05-01',  name: 'wangxiaohu',  address: 'No. 189, Grove St, Los Angeles',  },  ]);  }, 1000);  
};  

表尾合计行

若表格展示的是各类数字,可以在表尾显示各列的合计。

show-summary 设置为 true 就会在表格尾部展示合计行。 默认情况下,对于合计行,第一列不进行数据求和操作,而是显示【合计】二字(可通过 sum-text 配置) ,其余列会将本列所有数值进行求和操作,并显示出来。当然,你也可以定义自己的合计逻辑。 使用summary-method 并传入一个方法,返回一个数组,这个数组中的各项就会显示在合计行的各列中,可以是一个VNode或String。

 

const getSummaries = (param) => {  const { columns, data } = param;  const sums = [];  columns.forEach((column, index) => {  if (index === 0) {  sums[index] = document.createElement('div');  sums[index].style.textDecoration = 'underline';  sums[index].textContent = 'Total Cost';  return;  }  const values = data.map((item) => Number(item[column.property]));  if (!values.every((value) => Number.isNaN(value))) {  sums[index] = `$ ${values.reduce((prev, curr) => {  const value = Number(curr);  if (!Number.isNaN(value)) {  return prev + curr;  } else {  return prev;  }  }, 0)}`;  } else {  sums[index] = 'N/A';  }  });  return sums;  
};  

合并行或列

多行或多列共用一个数据时,可以合并行和列。

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

const arraySpanMethod = ({ row, column, rowIndex, columnIndex }) => {  if (rowIndex % 2 === 0) {  if (columnIndex === 0) {  return [1, 2];  } else if (columnIndex === 1) {  return [0, 0];  }  }  
};  

自定义索引

自定义 type=index 列的行号。

通过给 type=index 的列传入index属性,可以自定义索引。该属性传入数字时,将作为索引的起始值。也可以传入一个方法,它提供当前行额行号(从0开始)作为参数,返回值将作为索引展示。

 方法的代码部分。

表格布局

通过属性table-layout 可以指定表格中单元格、行和列的布局方式。

const tableLayout = ref('fixed')

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

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

相关文章

CNN和Transfomer介绍

文章目录 CNN和Transfomer介绍CNN和Transfomer的区别1. **基本概念**2. **数据处理方式**3. **模型结构差异**4. **应用场景区别** 自注意力机制1. **自注意力机制的概念**2. **自注意力机制的实现步骤**3. **自注意力机制的优势** Transformer结构组成1. **多头注意力层&#…

如何解决 ‘adb‘ 不是内部或外部命令,也不是可运行的程序或批处理文件的问题

在cmd中输入 adb &#xff0c;显示 ‘adc‘ 不是内部或外部命令&#xff0c;也不是可运行的程序或批处理文件的问题 解决办法&#xff1a;在环境变量中添加adb所在的路径 1、找到 adb.exe 的所在的文件路径&#xff0c;一般在 Android 安装目录下 \sdk\platform-tools\adb.exe…

数据结构---------二叉树前序遍历中序遍历后序遍历

以下是用C语言实现二叉树的前序遍历、中序遍历和后序遍历的代码示例&#xff0c;包括递归和非递归&#xff08;借助栈实现&#xff09;两种方式&#xff1a; 1. 二叉树节点结构体定义 #include <stdio.h> #include <stdlib.h>// 二叉树节点结构体 typedef struct…

网络架构与IP技术:4K/IP演播室制作的关键支撑

随着科技的不断发展&#xff0c;广播电视行业也在不断迭代更新&#xff0c;其中4K/IP演播室技术的应用成了一个引人注目的焦点。4K超高清技术和IP网络技术的结合&#xff0c;不仅提升了节目制作的画质和效果&#xff0c;还为节目制作带来了更高的效率和灵活性。那么4K超高清技术…

MySQL 8.0:explain analyze 分析 SQL 执行过程

介绍 MySQL 8.0.16 引入一个实验特性&#xff1a;explain formattree &#xff0c;树状的输出执行过程&#xff0c;以及预估成本和预估返 回行数。在 MySQL 8.0.18 又引入了 EXPLAIN ANALYZE&#xff0c;在 formattree 基础上&#xff0c;使用时&#xff0c;会执行 SQL &#…

观察者模式(sigslot in C++)

大家&#xff0c;我是东风&#xff0c;今天抽点时间整理一下我很久前关注的一个不错的库&#xff0c;可以支持我们在使用标准C的时候使用信号槽机制进行观察者模式设计&#xff0c;sigslot 官网&#xff1a; http://sigslot.sourceforge.net/ 本文较为详尽探讨了一种观察者模…

【已解决】黑马点评项目Redis版本替换过程中误删数据库后前端显示出现的问题

为了实现基于Redis的Stream结构作为消息队列&#xff0c;实现异步秒杀下单的功能&#xff0c;换Redis版本 Redis版本太旧了&#xff0c;所以从3.2.1换成了5.0.14 此时犯了一个大忌&#xff0c;因为新的Redis打开后&#xff0c;没有缓存&#xff0c;不知道出了什么问题&#xf…

基于Spring Boot的九州美食城商户一体化系统

一、系统背景与目标 随着美食城行业的快速发展&#xff0c;传统的管理方式已经难以满足日益增长的管理需求和用户体验要求。因此&#xff0c;九州美食城商户一体化系统应运而生&#xff0c;旨在通过信息化、智能化的管理方式&#xff0c;实现美食城的商户管理、菜品管理、订单…

springboot vue 会员营销系统

springboot vue 会员营销系统介绍 演示地址&#xff1a; 开源版本&#xff1a;http://8.146.211.120:8083/ 完整版本&#xff1a;http://8.146.211.120:8086/ 移动端 http://8.146.211.120:8087/ 简介 欢迎使用springboot vue会员营销系统。本项目包含会员储值卡、套餐卡、计…

HarmonyOS NEXT 技术实践-基于意图框架服务实现智能分发

在智能设备的交互中&#xff0c;如何准确理解并及时响应用户需求&#xff0c;成为提升用户体验的关键。HarmonyOS Next 的意图框架服务&#xff08;Intents Kit&#xff09;为这一目标提供了强大的技术支持。本文将通过一个项目实现的示例&#xff0c;展示如何使用意图框架服务…

sfnt-pingpong -测试网络性能和延迟的工具

sfnt-pingpong 是一个用于测试网络性能和延迟的工具&#xff0c;通常用于测量不同网络环境下的数据包传输性能、吞吐量、延迟等指标。 它通常是基于某种网络协议&#xff08;如 TCP&#xff09;执行“ping-pong”式的测试&#xff0c;即客户端和服务器之间相互发送数据包&…

前端下载文件的几种方式使用Blob下载文件

前端下载文件的几种方式 使用Blob下载文件 在前端下载文件是个很通用的需求&#xff0c;一般后端会提供下载的方式有两种&#xff1a; 1.直接返回文件的网络地址&#xff08;一般用在静态文件上&#xff0c;比如图片以及各种音视频资源等&#xff09; 2.返回文件流&#xff08;…

智能座舱进阶-应用框架层-Jetpack主要组件

Jetpack的分类 1. DataBinding&#xff1a;以声明方式将可观察数据绑定到界面元素&#xff0c;通常和ViewModel配合使用。 2. Lifecycle&#xff1a;用于管理Activity和Fragment的生命周期&#xff0c;可帮助开发者生成更易于维护的轻量级代码。 3. LiveData: 在底层数据库更…

知乎 PB 级别 TiDB 数据库集群管控实践

以下文章来源于知乎技术专栏 &#xff0c;作者代晓磊 导读 在现代企业中&#xff0c;数据库的运维管理至关重要&#xff0c;特别是面对分布式数据库的复杂性和大规模集群的挑战。作为一款兼容 MySQL 协议的分布式关系型数据库&#xff0c;TiDB 在高可用、高扩展性和强一致性方…

SpringBoot 自动装配原理及源码解析

目录 一、引言 二、什么是 Spring Boot 的自动装配 三、自动装配的核心注解解析 3.1 SpringBootApplication 注解 &#xff08;1&#xff09;SpringBootConfiguration&#xff1a; &#xff08;2&#xff09;EnableAutoConfiguration&#xff1a; &#xff08;3&#xf…

C++中的字符串实现

短字符串优化(SSO) 实现1 实现2 写时复制 #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<cstdio> #include<cstring> #include<cstring> using std::cout; using std::endl;// 引用计数存放的位置 // 1. 存放在栈上 --- 不行 // 2. 存…

Linux 基本使用和程序部署

1. Linux 环境搭建 1.1 环境搭建方式 主要有 4 种&#xff1a; 直接安装在物理机上。但是Linux桌面使用起来非常不友好&#xff0c;所以不建议。[不推荐]。使用虚拟机软件&#xff0c;将Linux搭建在虚拟机上。但是由于当前的虚拟机软件(如VMWare之类的)存在一些bug&#xff…

环网冗余CAN转光纤 CAN光端机在风电项目应用

在风力发电项目中&#xff0c;所有的风机内部的状态都需要能够在中控室备被监控到&#xff0c;不论是风机的工作状态还是风机内部的消防状态&#xff0c;以便中控室的工作人员都够根据观测到的信息及时的做出反应&#xff0c;避免造成重大损失。 通常风机的工作信息通过将网口…

ubuntu 如何重装你的apt【apt-get报错: symbol lookup error/undefined symbol】

副标题:解决error:apt-get: symbol lookup error: /lib/x86_64-linux-gnu/libapt-private.so.0.0: undefined symbol: _ZNK13pkgTagSection7FindULLENS_3KeyERKy, version APTPKG_6.0 文章目录 问题描述报错分析解决方案:重装你的apt1、查看你的ubuntu版本2、下载适配你的ap…

网络管理 详细讲解

讲一下之前获取CPU的&#xff0c;其余的原理和这个一样 python代码 app.route(/cpu/) def cpu_used():cpuoidObjectType(ObjectIdentity(myOIDs[cpu_loads]))ret getTableRows((cpuoid,))cpuload0for i in ret:cpuload i[0]print(cpuload)return {cpu:cpuload} var dom do…