使用el-table的案例小结——包含跨页多选、双击行、分页器、编辑\删除行、动态根据分页生成序号

首先看一下业务需求

在这里插入图片描述
需要实现跨页多选,双击行的时候弹出编辑对话框,对每行可以进行编辑和删除,实现分页器。
如果还没在项目中配置element-plus的可以参考文章 从零开始创建vue3项目——包含项目初始化、element-plus、eslint、axios、router、pinia、echarts,也可以参考element-plus官方文档 element-plus

搭建基本的el-table结构

我将一一解释代码,大家后续可以对照代码和文章进行理解观看

<el-table:data="dataList"style="width: 100%"borderrow-key="id"@selection-change="handleSelectionChange"v-loading="loading"@row-dblclick="onClickEditUser"><el-table-column type="selection" width="55" reserve-selection /><el-table-columntype="index":index="indexMethod"label="序号"width="100"/><el-table-column prop="userIdNumber" label="身份证号" /><el-table-column prop="userName" label="姓名" /><el-table-column prop="userBirthday" label="生日" /><el-table-column label="操作" min-width="90"><template #default="{ row }"><el-button @click="onClickEditUser(row)"> 编辑 </el-button><el-button type="danger" @click="onCLickDeleteUser(row)">删除</el-button></template></el-table-column><template #empty><el-empty description="暂无数据"></el-empty></template></el-table>

el-table

  1. el-table 使用 :data="dataList" 绑定数据列表,这个数据就是自己定义的了
  2. border就在表格内添加边框,更加美观
  3. row-key="id"如果要实现跨页多选,这个非常重要,具体的作用是因为后续要给选择框的列添加reserve-selection属性,设置该属性的前提就是el-table设置row-key
    在这里插入图片描述
  4. @selection-change="handleSelectionChange"这个的作用是因为实现了跨页多选,当选择的行发生变化时,就会自动触发这个函数
    ···js
    //多选用户时,存储当前选择的用户
    const multipleSelection = ref([])
    const handleSelectionChange = (val) => {
    multipleSelection.value = val
    }
    ···
  5. v-loading="loading"这个就是当loading为true时,表格中有转圈圈的提示,让交互更加友好,具体为可以设置请求数据时设置loading。
//获取数据
const getUserList = async function () {loading.value = true//接口根据自己实际的写await ...loading.value = false
}
  1. @row-dblclick="onClickEditUser"就是实现双击行时触发响应自定义函数
//编辑用户信息
const onClickEditUser = function (row) {//自定义执行逻辑,row就是当前行的数据userFormDialogRef.value.onClickOpenEditDialog(row)
}

el-table-column

el-table-column就是el-table中每列的数据

  1. <el-table-column type="selection" width="55" reserve-selection />
    这个就是第一列的选择框的列,设置type为selection,要实现跨页多选,就一定设置reserve-selection
    在这里插入图片描述
  2. <el-table-column type="index" :index="indexMethod" label="序号" width="100"/>
    这个就是第二列的序号,设置type为index即可,但是如果仅仅这样设置有个问题,那就是当页面改变时,index仅为当前页的序号。
    举例:当前第一页,index为1-10,切换页面至第二页时,期望Index为11-20,但是此时会还是1-10
    因此需要下述的函数来进行额外处理
//更改序号
//pageNum和pageSize都是自定义的,后面分页器会讲到
const indexMethod = function (index) {return (pageNum.value - 1) * pageSize.value + index + 1
}
  1. 数据列
<el-table-column prop="userIdNumber" label="身份证号" />
<el-table-column prop="userName" label="姓名" />
<el-table-column prop="userBirthday" label="生日" />

这几个就都一样的,label为当前行的名字,prop为绑定的数据,比如姓名绑定的是userName,那么el-table 绑定的dataList的基本结构就是

const dataList = ref([{userIdNumber:'123',userName:'jack',userBirthdat:'2021-01-01'
},{userIdNumber:'123',userName:'jack',userBirthdat:'2021-01-01'
}])
  1. 操作列
<el-table-column label="操作" min-width="90"><template #default="{ row }"><el-button @click="onClickEditUser(row)"> 编辑 </el-button><el-button type="danger" @click="onCLickDeleteUser(row)">删除</el-button></template></el-table-column>

这里使用了template具名插槽,记住一定要设置#default="{row}",这样后续点击编辑删除的时候,才可以传递本行的数据给对应的处理函数
两个el-button分别绑定处理函数,较为简单

使用el-pagination分页器

官方文档

  1. :background="true"这个就是设置分页器的背景,更加美观

  2. layout="jumper,total, prev, pager, next"这个就是设置分页器有哪些元素,分别是页面跳转、总数据数、向前翻页、显示页数、向后翻页,layout中写的数据就是实际显示的数据。实际上还有个size,可以设置每页的数据条数
    在这里插入图片描述

  3. @current-change="onCurrentChange"监听页面变化,触发对应自定义函数

//页数变化时
const onCurrentChange = function (page) {pageNum.value = pagegetUserList()
}
  1. 数据绑定
:total="total"
:page-size="pageSize"
:current-page="pageNum"

这三个分别绑定数据总数,每页数据数目、当前页数

//分页器相关
const total = ref(0)
const pageNum = ref(1)
const pageSize = ref(10)

一般来讲,total是请求数据时,后端一起发送的,pageSize可以固定写死,也可以通过刚才提到的layout的size属性进行动态设置

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

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

相关文章

vue import from

vue import from 导入文件&#xff0c;从XXXX路径&#xff1b;引入文件 import xxxx from “./minins/resize” import xxxx from “./minins/resize.js” vue.config.js 定义 : resolve(src)&#xff1b;就是指src 目录 import xxxx from “/utils/auth” im…

014集——RSA非对称加密——vba源代码

今天介绍一种安全的加密方法&#xff0c;RSA非对称加密。 RSA算法基于一个十分简单的数论事实:将两个大质数相乘十分容易&#xff0c;但是想要对其乘积进行因式分解却极其困难&#xff0c;因此可以将乘积公开作为加密密钥。 部分源代码如下&#xff1a; qq4434402042024年3月…

【C++初阶】string类

【C初阶】string类 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;C&#x1f96d; &#x1f33c;文章目录&#x1f33c; 1. 为什么学习string类&#xff1f; 1.1 C语言中的字符串 1.2 实际中 2. 标准库中的string类 2.1 string类 2.…

Web响应式设计———1、Grid布局

1、网格布局 Grid布局 流动网格布局是响应式设计的基础。它通过使用百分比而不是固定像素来定义网格和元素的宽度。这样&#xff0c;页面上的元素可以根据屏幕宽度自动调整大小&#xff0c;适应不同设备和分辨率。 <!DOCTYPE html> <html lang"en"> &l…

并发线程学习(Java)

消费者生产者模型 package thread;import java.util.LinkedList; import java.util.Queue;public class ProducerConsumer {private static final int MAX_SIZE 5;private final Queue<Integer> buffer new LinkedList<>();public synchronized void producer(i…

element表单disabled功能失效问题

element表单disabled功能失效问题 场景:当需要根据商品状态来判断是否开启disabled来禁用表单时, disabled绑定了对应的值, 但无论商品是哪种状态, 表单都能操作, disabled失效 <el-form-item label"商品分类"><el-selectv-model"form.packagesTypeI…

二叉树---二叉搜索树的最近公共祖先

题目&#xff1a; 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为&#xff1a;“对于有根树 T 的两个结点 p、q&#xff0c;最近公共祖先表示为一个结点 x&#xff0c;满足 x 是 p、q 的祖先且 x 的深度尽可能大&#xff08;一…

Unable to connect to Redis] with root cause

Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: org.springframework.data.redis.RedisConnectionFailureException: Unable to connect to Redis] with root cause springboot运行不了&#xff0c…

Object.entries()解析出来的数组顺序乱了,健是string类型

现象: 从后端哪里拿到了一长串数据 const obj {"2023-07-01":10,"2023-09-18":2,"2023-10-10":3,"2024-01-10":1,"2024-01-12":1,"2024-02-20":4,"2024-07-01":4,... }; 比如上面的数据有一年的 并…

Mysql-索引视图

目录 1.视图 1.1什么是视图 1.2为什么需要视图 1.3视图的作用和优点 1.4创建视图 1.5更新视图 1.6视图使用规则 1.7修改视图 1.8删除视图 2.索引 2.1什么是索引 2.2索引特点 2.3索引分类 2.4索引优缺点 2.5创建索引 2.6查看索引 2.7删除索引 1.视图 1.1什么是…

go中map

文章目录 Map简介哈希表与Map的概念Go语言内建的Map类型Map的声明Map的初始化Map的访问Map的添加和修改Map的删除Map的遍历 Map的基本使用Map的声明与初始化Map的访问与操作Map的删除Map的遍历Map的并发问题实现线程安全的Map 3. Map的访问与操作3.1 访问Map元素代码示例&#…

释疑 803-(1)概述 精炼提纯版

目录 习题 1-01计算机网络可以向用户提供哪些服务? 1-02 试简述分组交换的要点。 1-03 试从多个方面比较电路交换、报文交换和分组交换的主要优缺点。 1-05 互联网基础结构的发展大致分为哪几个阶段?请指出这几个阶段最主要的特点。 1-06 简述互联网标准制定的几个阶段…

web网站组成

web网站由四部分组成&#xff1a;浏览器 前端服务器 后端服务器 数据库服务器 流程&#xff1a; 1.浏览器输入网站后&#xff0c;向前端服务器发送请求&#xff0c;前端服务器响应&#xff0c;静态的数据给浏览器。 2.前端代码中script中有url,这个是向后台发送请求的网…

手撕数据结构---------顺序表和链表

1.线性表 线性表&#xff08;linear list&#xff09;是n个具有相同特性的数据元素的有限序列。 线性表是⼀种在实际中⼴泛使 ⽤的数据结构&#xff0c;常⻅的线性表&#xff1a;顺序表、链表、栈、队列、字符串… 线性表在逻辑上是线性结构&#xff0c;也就说是连续的⼀条直…

git 回退远端的分支

要将 Git 远端的 分支&#xff08;例如dev-windows&#xff09;回退到特定的提交&#xff08;例如 61e836f3bfc04688a56fc6dca601c7d56c395cc8 (通过 git log 可以查看)&#xff09;&#xff0c; 可以按照以下步骤操作&#xff1a; 1. 回退到指定提交并更新本地分支 首先&…

Python研究生毕业设计,数据挖掘、情感分析、机器学习

最近在学校毕业了&#xff0c;其中有很多毕业论文使用到的代码&#xff0c;如数据挖掘、情感分析、机器学习、数据预测处理、划分数据集和测试集&#xff0c;绘制分类任务&#xff0c;词汇表示&#xff1a;使用TF-IDF向量化器&#xff0c;线性回归、多元线性回归、SVR回归模型&…

0 Redis简介

Redis是key-value存储系统&#xff0c;是跨平台的非关系型数据库。 Redis通常被称为数据结构服务器&#xff0c;是一个开源的内存数据库&#xff0c;常用于缓存、消息队列、会话存储等应用场景。 Redis 与其他 key-value 存储有什么不同&#xff1f; 丰富的数据类型&#xf…

ecshop网站部署

目录 步骤1 ecshop网站的部署 一、安装环境 二、设置开机启动 ​三、 测试php ​四、上传安装包 五、安装ecshop 步骤1 ecshop网站的部署 一、安装环境 yum install -y httpd mariadb-server php php-devel php-mysql 浏览器访问&#xff1a;192.168.30.2 二、设置开机启…

LeetCode 415.字符串相加 C++写法

LeetCode 415.字符串相加 C写法 思路&#x1f914;&#xff1a; 首先不能用stoi和tostring来做&#xff0c;如果给一个很大的数那一定存不下。我们可以从后往前一位一位的取&#xff0c;创建一个变量存储进位用于计算下一位数&#xff0c;之后取模得到当前数字&#xff0c;每一…

k8s部署rabbitmq集群

1 部署集群 1.1 安装 # 创建一个中间件的命名空间 kubectl create namespace middleware # 创建ConfigMap,包含RabbitMQ的配置文件内容 kubectl apply -f rabbitmq-configmap.yaml # 配置用于存储RabbitMQ数据的PersistentVolume&#xff08;PV&#xff09;和PersistentVolum…