vue2+vxe-table实现表格增删改查+虚拟滚动

vue2+vxe-table实现表格增删改查+虚拟滚动

使用的vxe-table版本:v3.x (vue 2.6 长期维护版)
在这里插入图片描述

完整代码

<template><div><vxe-toolbar ref="xToolbar" export :refresh="{query: findList}"><template #buttons><vxe-button @click="insertEvent(null)">从第一行插入</vxe-button><vxe-button @click="insertEvent(-1)">从最后插入</vxe-button><vxe-button @click="insertEvent($refs.xTable.getData(100))">插入到 100</vxe-button><vxe-button @click="insertEvent($refs.xTable.getData(300))">插入到 300</vxe-button><vxe-button @click="$refs.xTable.removeCheckboxRow()">删除选中</vxe-button><vxe-button @click="delFirst">删除第一行</vxe-button><vxe-button @click="$refs.xTable.remove($refs.xTable.getData($refs.xTable.getData().length - 1))">删除最后一行</vxe-button><vxe-button @click="$refs.xTable.remove($refs.xTable.getData(100))">删除第 100</vxe-button><vxe-button @click="getInsertEvent">获取新增</vxe-button><vxe-button @click="getRemoveEvent">获取删除</vxe-button><vxe-button @click="getUpdateEvent">获取修改</vxe-button><vxe-button icon="vxe-icon-save" @click="saveEvent" status="primary">保存</vxe-button></template></vxe-toolbar><vxe-table border resizable show-overflow keep-source ref="xTable" height="400" :loading="loading" :export-config="{}":edit-config="{trigger: 'click', mode: 'row', showStatus: true}":scroll-y="{enabled: true}"><vxe-column type="checkbox" width="60"></vxe-column><vxe-column type="seq" width="100"></vxe-column><vxe-column field="name" title="Name" sortable :edit-render="{autofocus: '.vxe-input--inner'}"><template #edit="{ row }"><vxe-input v-model="row.name" type="text"></vxe-input></template></vxe-column><vxe-column field="age" title="Age" :edit-render="{}"><template #edit="{ row }"><vxe-input v-model="row.age" placeholder="请输入" type="float" digits="1"><template #suffix><i class="vxe-icon-warning-triangle-fill"></i></template></vxe-input></template></vxe-column><vxe-column field="sex" title="Sex" :edit-render="{}"><template #edit="{ row }"><vxe-input v-model="row.sex" placeholder="请输入" type="float" digits="2"><template #suffix><i>%</i></template></vxe-input></template></vxe-column><vxe-column field="rate" title="Rate"></vxe-column><vxe-column field="region" title="Region"></vxe-column><vxe-column field="time" title="Time"></vxe-column><vxe-column field="address" title="Address" width="300" show-overflow></vxe-column></vxe-table></div>
</template><script>
export default {data () {return {loading: false,}},created () {this.$nextTick(() => {// 将表格和工具栏进行关联this.$refs.xTable.connect(this.$refs.xToolbar)})this.findList()},methods: {findList () {this.loading = truereturn new Promise(resolve => {setTimeout(() => {const data = this.mockList(200)// 阻断 vue 对大数组的监听,避免 vue 绑定大数据造成短暂的卡顿if (this.$refs.xTable) {this.$refs.xTable.loadData(data)}resolve()this.loading = false}, 500)})},mockList (size) {const list = []for (let index = 0; index < size; index++) {list.push({name: `名称${index}`, sex: '0', num: 123, age: 18, num2: 234, rate: 3, address: 'shenzhen'})}return list},insertEvent (row) {let xTable = this.$refs.xTableconst record = {checked: false}xTable.insertAt(record, row).then(({ row }) => {xTable.setEditRow(row)})},getInsertEvent () {let insertRecords = this.$refs.xTable.getInsertRecords()console.log(insertRecords);},getRemoveEvent () {let removeRecords = this.$refs.xTable.getRemoveRecords()console.log(removeRecords);},getUpdateEvent () {let updateRecords = this.$refs.xTable.getUpdateRecords()console.log(updateRecords);},delFirst() {this.$refs.xTable.remove(this.$refs.xTable.tableFullData[0])console.log(222, this.$refs.xTable.tableFullData);},/*** 点击保存按钮*/async saveEvent () {const $table = this.$refs.xTableconst errMap = await $table.validate().catch(errMap => errMap)if (errMap) {VXETable.modal.message({ status: 'error', message: '校验未通过,请填写必填项' })} else {// 可以用这3个变量发送请求// 要新增的数据,要删除的数据,要更新的数据const { insertRecords, removeRecords, updateRecords } = $table.getRecordset()console.log("insertRecords", insertRecords);console.log("removeRecords", removeRecords);console.log("updateRecords", updateRecords);// insertRecords.length && this.insertData(insertRecords);// removeRecords.length && this.deleteData(removeRecords);// updateRecords.length && this.updateData(updateRecords);// await this.getTableList1();}},}
}
</script>

结果
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

1W 1.5KVDC 3KVDC 隔离宽范围输入,单、双输出 DC/DC 电源模块——TP2L-1W 系列

TP2L-1W系列是一款高性能、超小型的电源模块&#xff0c;宽范围2&#xff1a;1,4:1输入&#xff0c;输出有稳压和连续短路保护功能&#xff0c;隔离电压为1.5KVDC&#xff0c;3KVDC工作温度范围为–40℃到85℃。特别适合对输出电压的精度有严格要求的地方&#xff0c;外部遥控功…

瑞_Docker(笔记超详细,有这一篇就够了)

文章目录 1 Docker入门1.1 卸载旧版Docker1.2 安装Docker1.2.1 安装Docker的yum库1.2.2 配置Docker的yum源1.2.3 安装Docker1.2.4 启动和校验&#xff08;开机自启&#xff09;1.2.5 配置镜像加速 1.3 使用示例&#xff1a;部署MySQL1.3.1 命令解读 2 Docker基础2.1 常见命令2.…

第二届 eBPF 开发者大会分享回顾 - Pipy 与 eBPF:重塑系统级编程的新范式

四月的西安&#xff0c;春意盎然&#xff0c;这座古城在温暖的春风中更添了几分旖旎风光。第二届 eBPF 开发者大会在西安顺利召开。 本次大会由西安邮电大学主办&#xff0c;主题为“发挥 eBPF 技术力量&#xff0c;提升计算机系统可观测性和性能”&#xff0c;旨在探讨和分享 …

世界读书日 | 开发者必读书单重磅来袭,华为云DTSE专家天团力荐

春色恰如许&#xff0c;读书正当时。 读书&#xff0c;就像解锁一把神秘钥匙&#xff0c;为开发者洞开新世界的大门&#xff0c;赋予他们破译复杂难题的能力、挑战未知领域的勇气。书页翻动间&#xff0c;开发者得以站在巨人的肩膀上&#xff0c;汲取前人经验&#xff0c;积蓄…

比特币之路:技术突破、创新思维与领军人物

比特币的兴起是一段充满技术突破、创新思维和领军人物的传奇之路。在这篇文章中&#xff0c;我们将探讨比特币发展的历程&#xff0c;以及那些在这一过程中发挥重要作用的关键人物。 技术突破与前奏 比特币的诞生并非凭空而来&#xff0c;而是建立在先前的技术储备之上。在密码…

自定义数据 微调CLIP (结合paper)

CLIP 是 Contrastive Language-Image Pre-training 的缩写&#xff0c;是一个擅长理解文本和图像之间关系的模型&#xff0c;下面是一个简单的介绍&#xff1a; 优点&#xff1a; CLIP 在零样本学习方面特别强大&#xff0c;它可以&#xff08;用自然语言&#xff09;给出图像…

lementui el-menu侧边栏占满高度且不超出视口

做了几次老是忘记&#xff0c;这次整理好逻辑做个笔记方便重复利用&#xff1b; 问题&#xff1a;elementui的侧边栏是占不满高度的&#xff1b;但是使用100vh又会超出视口高度不美观&#xff1b; 解决办法&#xff1a; 1.获取到侧边栏底部到视口顶部的距离 2.获取到视口的高…

操作系统:进程间通信 | 管道

目录 1.进程间通信介绍 1.1.简要介绍 1.2.进程间通信的目的 1.3.进程间通信的本质 2.管道 2.1.管道的通信原理 2.2.匿名管道 2.3.命名管道 2.4.基于匿名管道的进程池demo 2.4.1.进程池的相关引入 2.4.2.整体框架的分析 2.4.3.代码的实现 1.进程间通信介绍 1.1.简…

华为认证FAQ | 考试预约、考券购买常见问题

●考试预约常见问题● Q : 如何进行考试预约&#xff1f; A : 登录“华为人才在线官网” >>参考考试预约操作指引在线预约考试>>检查考试预约记录&#xff0c;确认预约成功 (私信获取考试预约操作指引文档&#xff09;。&#xff08;注&#xff1a;非本人预约…

程序员学CFA——数量分析方法(四)

数量分析方法&#xff08;四&#xff09; 常见概率分布基本概念离散型随机变量与连续型随机变量离散型随机变量连续型随机变量 分布函数概率密度函数&#xff08;PDF&#xff09;累积分布函数&#xff08;CDF&#xff09; 离散分布离散均匀分布伯努利分布二项分布定义股价二叉树…

程序的表示、转换与链接:三、运算电路基础

目录 一、整数加减运算理论二、数字逻辑电路基础和整数加减运算部件三、如何启用逻辑电路&#xff1a;从C表达式到逻辑电路四、C语言中的各类运算 一、整数加减运算理论 整数加减运算 无符号整数加减运算&#xff1a;指针、地址等通常被说明为无符号整数&#xff0c;因而在进行…

pycharm远程连接server

1.工具–部署–配置 2.部署完成后&#xff0c;将现有的项目的解释器设置为ssh 解释器。实现在远端开发 解释器可以使用/usr/bin/python3

Opencv_10_自带颜色表操作

void color_style(Mat& image); Opencv_10_自带颜色表操作&#xff1a; void ColorInvert::color_style(Mat& image) { int colormap[] { COLORMAP_AUTUMN, COLORMAP_BONE , COLORMAP_JET , COLORMAP_WINTER, COLORMAP_RAINBOW , COLOR…

Ts支持哪些类型和类型运算(下)

目录 1、条件判断 &#xff08;extends &#xff1f;&#xff09; 2、推导 infer 3、联合 | 4、交叉 & 5、映射类型 1、条件判断 &#xff08;extends &#xff1f;&#xff09; ts里的条件判断&#xff0c;语法为 T extends XXX ? true : false &#xff0c;叫做…

【Qt 学习笔记】Qt常用控件 | 按钮类控件 | Check Box的使用及说明

博客主页&#xff1a;Duck Bro 博客主页系列专栏&#xff1a;Qt 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ Qt常用控件 | 按钮类控件 | Check Box的使用及说明 文章编号&#xff…

智能时代 | 合合信息Embedding模型荣获C-MTEB榜单第一

目录 前言 1. MTEB与C-MTEB 2. acge模型的优势 3. Embedding模型应用 4. 大模型发展的关键技术 结语 前言 随着人工智能的不断发展&#xff0c;大语言模型吸引着社会各界的广泛关注&#xff0c;支撑模型应用落地的Embedding模型成为业内的焦点&#xff0c;大模型的发展给…

解放生产力:项目管理软件的神奇作用大揭秘!

对于刚刚进入项目管理领域的新人首先要了解的概念就是项目管理软件是什么&#xff1f;项目管理软件的作用&#xff0c;如今的项目管理软件已经非常成熟&#xff0c;融合了一整套的项目管理理论&#xff0c;在管理项目进度、管理工时、团队协同方面发挥着重要作用。 一、项目管理…

vue 关键字变红

1.html <div v-html"replaceKeywordColor(item.title)" ></div> 2.js //value为搜索框内绑定的值 replaceKeywordColor(val) {if (val?.includes(this.value) && this.value ! ) {return val.replace(this.value,<font color"red&…

游戏黑灰产识别和溯源取证

参考&#xff1a;游戏黑灰产识别和溯源取证 1. 游戏中的黑灰产 1. 黑灰产简介 黑色产业&#xff1a;从事具有违法性活动且以此来牟取利润的产业&#xff1b; 灰色产业&#xff1a;不明显触犯法律和违背道德&#xff0c;游走于法律和道德边缘&#xff0c;以打擦边球的方式为“…

【C++】类和对象④(类的默认成员函数:取地址及const取地址重载 | 再谈构造函数:初始化列表,隐式类型转换,缺省值)

&#x1f525;个人主页&#xff1a;Forcible Bug Maker &#x1f525;专栏&#xff1a;C 目录 前言 取地址及const取地址操作符重载 再谈构造函数 初始化列表 隐式类型转换 explicit关键字 成员变量缺省值 结语 前言 本篇主要内容&#xff1a;类的六个默认成员函数中…