解决vxe-table复选框翻页选中问题

2023-11-20

解决vxe-table复选框翻页选中问题

根据vxe-table官方文档,想要保留勾选中的数据,我们的代码中需要设置“row-id”和:checkbox-config中的“reserve”属性。

vxe-table官方文档
在这里插入图片描述
简单写下html部分:

<vxe-grid
	row-id="id"
	:checkbox-config="{ labelField: '', highlight: true, trigger: 'row', reserve: true , range: true}"
	@checkbox-all="selectAllEvent"
    @checkbox-change="selectChangeEvent"
>
	<!--自定义表格内容-->
</vxe-grid>

因为项目都用到vxe-table,所有这里使用vue的混入应用的项目的所有页面表格中,在混入文件中写复选框的事件:

//定义数据,简单模拟
data() {
	return {
		/*table选中keys*/
		selectedRowKeys: [],
		/*table选中records*/
		selectionRows : [],
	}
}
//复选框事件(保留翻页选中的数据)
selectChangeEvent({ checked, records, reserves, row }) {
     // console.log(checked ? '勾选事件' : '取消事件')
     // console.log('当前选中的数据:' + records)
     // console.log('翻页时其他页的数据:' + reserves)
     // console.log('当前选中的数据行:' + row )
     //勾选选中时
     if (checked) {
     	//第一次选数据,还未进行翻页时
         if (reserves.length == 0){
             this.selectedRowKeys = records.map(v => v.id);
             this.selectionRows = records;
         }else {
             //id集合,翻页存在已选中的数据时,拼接新选中的数据
             this.selectedRowKeys = [...reserves.map(v => v.id),...records.map(v => v.id)];
             //数据集合,翻页存在已选中的数据时,拼接新选中的数据
             this.selectionRows = [...reserves,...records];
         }
     }else {
         //取消选中时
         let idIndex = this.selectedRowKeys.indexOf(row.id);
         if (idIndex > -1) {
             //删除取消选中删除指定元素id
             this.$delete(this.selectedRowKeys, idIndex);
         }
         
         let dataIndex = null;
         for(let i = 0; i < this.selectionRows.length; i++) {
             if (this.selectionRows[i].id == row.id) {
                 dataIndex = i;
                 break;
             }
         }
         //删除取消选中的元素整个对象
         this.$delete(this.selectionRows, dataIndex);
     }
 },
 //vxe复选框当前页全选中方法(保留翻页选中的数据):
 selectAllEvent({ checked, records, reserves}) {
     // console.log(checked ? '勾选事件' : '取消事件')
     // console.log('当前选中的数据:' + records)
     // console.log('翻页时其他页的数据:' + reserves)
     //全选中时
     if (checked) {
     	 //第一次选数据,还未进行翻页时
         if (reserves.length == 0){
             this.selectedRowKeys = records.map(v => v.id);
             this.selectionRows = records;
         }else {
             //id集合,翻页存在已选中的数据时,拼接新选中的数据
             this.selectedRowKeys = [...reserves.map(v => v.id),...records.map(v => v.id)];
             //数据集合,翻页存在已选中的数据时,拼接新选中的数据
             this.selectionRows = [...reserves,...records];
         }
     }else {
         //取消全选时,直接将翻页数据赋值,当前页数据不用加上
         this.selectionRows = reserves;
         this.selectedRowKeys = reserves.map(v => v.id)
     }
 }

上面就实现了vxe-table表格复选框选中和全选中事件,在进行翻页选其他页的数据时,还能保留前面选中的数据的功能,有什么问题的话可以在评论区留言。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

解决vxe-table复选框翻页选中问题 的相关文章

  • Vue父组件访问子组件的compute属性

    在 Vue JS 中 当在数组元素 子元素 的计算属性中进行更改时 我无法监视数组的更改 我在编写的 JSFiddle 示例中总结了这个问题 因此该示例在逻辑上可能没有意义 但它确实显示了我的问题 https jsfiddle net tr
  • 观察者不触发

    我正在使用带有选项 API 的 Vue 3 如下面发布的代码所示 在watch对象 我监视发生的变化isToggleBtnLabelDigitizePolygon 在方法中onDigitizePolygon我改变的值isToggleBtnL
  • 如何在外部 .js 文件中分离 .vue 组件的方法?

    我的组件留下了许多行代码 因此我决定将这些方法放在一个名为functions js 的单独文件中 我无法调用这些方法 我试过这个 函数 js function sendList function getLists function dele
  • 媒体查询在 VueJS 样式标签中不起作用

    我正在尝试在 VueJS 组件的样式标签中使用 media media 中的样式始终有效 而不是使用宽度规则
  • 仅当内容超过两行时显示只读/隐藏按钮

    我正在创建一个评论部分 类似于 youtube 的东西 并且我希望能够在 content 有多行时显示阅读更多 隐藏按钮 这就是我到目前为止所做的 我的阅读更多 隐藏按钮可以工作 因为我添加了一个计算的线夹 使内容仅在存在多行时才显示两行
  • Laravel 5.2 CORS,GET 不适用于预检选项

    可怕的 CORS 错误 跨源请求被阻止 同源策略不允许读取 远程资源位于http localhost mysite api test http localhost mysite api test 原因 CORS 标头 Access Cont
  • 如何在 Vue 中动态创建的组件上获取更新的 $refs?

    我的组件数量取决于数组数量 因此当我向数组添加新项目时 它应该创建新组件 当创建新组件时 我想获得它的参考 这就是我有误解的地方 最后添加的组件是undefined当我试图得到它时 但是 如果我在一段时间后尝试获取参考 它就会起作用 我猜这
  • Vue 3:“defineProps”引用本地声明的变量

    为什么我收到警告错误消息 defineProps引用本地声明的变量 eslint vue valid define props 当我在 props 中使用自定义验证器时SFC
  • 如何将typescript添加到Vue 3和Vite项目中

    我的设置 我通过以下方式安装了 Vue 和 Vite创建 vite 应用程序模块 然后将 init vite app 生成的所有包更新为 Vue 和 Vite 的最新 RC 版本 现在我想对我的所有代码使用打字稿 首先我只是玩了一下 然后添
  • 如何在 vue.js 中使用 SVG.js 插件?

    我在用svg js在我的 Laravel 项目中运行vue js 这就是我使用的方式svg js Step 1 安装svg js作为我的 vue 应用程序中的插件 import svgJs from svg js dist svg expo
  • 如何从特定索引渲染 v-for

    我想在 v for 中循环假设从数字 5 到 10 循环希望在 5 点开始并在 10 点结束 我试过这个 div div 但我想要更有效的循环方式 有谁知道如何让循环从 5 开始 对于你的例子来说是可能的 div some code her
  • Apollo 客户端“未找到命名导出‘删除’”

    我正在尝试创建一个apollo client插件Nuxt 3应用 它当前抛出有关名为的包的错误ts invariant file Users my name Repositories project node modules apollo
  • 访问 .js 文件中的 Nuxt 插件

    假设我有一个脚本文件 foo js function doStuff how to access store and other plugins here export default doStuff 如果不将调用组件作为参数传递 我如何访
  • 如何在 Nuxt 中设置 netlify 表单

    当我通过添加带有 a 的链接来使用 vue router 导航到表单时
  • NuxtJS & SASS Loader - 在生产环境中使用 sass-loader (SCSS) 进行构建

    我添加了此行以在开发 本地 服务器上使用 sass loader 进行构建 nuxt config js module exports mode spa build analyze analyzerMode static generateS
  • 如何将函数导入到Vue组件中?

    我正在尝试将单个函数导入到我的 Vue 组件中 我为我的函数创建了一个单独的 js 文件 randomId js exports randomId gt My function 在我的 Vue 组件中 我导入了 Random js let
  • 监听 Vue.js 中的自定义事件

    Vue js 非常适合处理浏览器事件 例如click or mousedown 但根本不适用于自定义事件 这是代码 HTML div style display none div div div div div
  • Vue 2 转换不起作用

    我不知道我的代码哪里出了问题 这应该是一个简单的过渡 当我单击按钮时 消息显示正确 但只是根本没有发生淡入淡出过渡
  • 页面在 Google Adwords 转化跟踪上重定向

    我有一个表单 人们可以在其中提交数据 然后使用 ajax 将数据发送到服务器 我已将其设置为 Google Adwords 中的转化 下面是我使用过的代码 问题是 当用户提交表单时 在收到响应后 它会重定向回我给出的 URL 我不想重定向
  • nuxtjs 无法在生产环境中显示动态 url

    我正在使用 nuxjs 构建我的项目 并创建一个动态显示地点信息的页面 当我跑步时npm run dev并测试http localhost 3000 place 66bb50b7a5 http localhost 3000 place 66

随机推荐

  • 前端实现导出excel表格(合并表头)

    需求 勾选行导出为excel表格 合并表头 一 安装插件 npm install save file saver xlsx 运行项目报如下警告的话 运行npm install xlsx 0 16 0 save 来降低版本号 最初我安装的版本
  • hive的3种数据存储格式

    hive有textFile SequenceFile RCFile三种文件格式 其中textfile为默认格式 建表时不指定默认为这个格式 导入数据时会直接把数据文件拷贝到hdfs上不进行处理 SequenceFile RCFile格式的表
  • 数据库列名无效原因

    1 原因可能是列名没有加中括号 2 可能是SQL语句中的列名与建表时的列名不一致 3 看看是不是
  • 出现使用选项-std=c99或-std=gnu99来编译您的代码错误或者如何让Linux内核编译驱动模块时支持C99

    最近在Linux系统下编译嵌入式代码时出现问题 问题如下图 然后发现问题出在这 use option std c99 or std gnu99 to compile your code 上面的意思是 使用选项 std c99或 std gn
  • Notepad++ 列操作

    在网上找到一篇关于socket编程的文章 想把其中的代码直接拷贝下来运行测试 但是人家网站做的不够人性化 每行的开头都有行号 直接拷贝就要一行行的删除 甚是麻烦 想到linux下的vi编辑器可以完成列操作 windows下应该也有相关软件可
  • kali之vulhub,medium_socnet

    目录 一 部署环境 二 进行主机发现 arp scan进行扫描 三 使用nmap扫描发现的靶机IP 1 全端口扫描 看服务 2 查看端口所用服务版本 3 登录ip地址看一下 四 扫目录 dirsearch脚本 和windous御剑类似 1
  • Linux进程间通信--使用命名管道

    Linux进程间通信 使用命名管道 一 什么是命名管道 命名管道也被称为FIFO文件 它是一种特殊类型的文件 它在文件系统中以文件名的形式存在 但是它的行为却和之前所讲的没有名字的管道 匿名管道 类似 由于Linux中所有的事物都可被视为文
  • OpenCV-Python中的标量Scalar是什么

    前往老猿Python博客 https blog csdn net LaoYuanPython 一 标量的常规含义 在百度百科中标量是这样定义的 标量 scalar 亦称 无向量 有些物理量 只具有数值大小 而没有方向 部分有正负之分 物理学
  • Windows驱动开发(一)第一个驱动程序

    首先我们需要了解 在操作系统中 是分两种权限的 一种是内核态 我们也称为0环 一种是用户态 称之为3环 而在我们的电脑中 驱动程序是运行在内核态的 这意味着和操作系统内核是在同一权限的 而普通的应用程序的权限是最低的 高权限谁不想拥有呢 因
  • Qt:鼠标事件(鼠标移动事件、鼠标按下事件、鼠标释放事件、进入窗口区域、离开窗口区域)

    鼠标事件 本质是重写重写QWidgt中虚函数 以下程序是获取鼠标坐标 mylabel h ifndef MYLABEL H define MYLABEL H include
  • IntelliJ IDEA(Community版本)本地模式的下载、安装及其使用

    对于初学者来说可以先使用免费的社区版本练练手 ideaIC 2017 3 5 gt 社区版 ideaIU 2017 3 5 gt 旗舰版 一 IntelliJ IDEA Community版本 下载 下载链接 https www jetbr
  • parser解析中的-与_

    import argparse parser argparse ArgumentParser description 解析命令行参数 parser add argument echo s parser add argument echo d
  • [python] 使用Jieba工具中文分词及文本聚类概念

    前面讲述了很多关于Python爬取本体Ontology 消息盒InfoBox 虎扑图片等例子 同时讲述了VSM向量空间模型的应用 但是由于InfoBox没有前后文和语义概念 所以效果不是很好 这篇文章主要是爬取百度5A景区摘要信息 再利用J
  • Nginx 官方rpm包下载地址

    运维更换地方需求保存的地址 centos http nginx org packages rhel 7 x86 64 RPMS
  • 怎么用好免费的ChatGPT

    最近 ChatGPT因其出色的表现而备受关注 网友们纷纷赞叹不已 然而 在国内目前还没有相应的使用途径 本文旨在向大家介绍如何免费使用ChatGPT 并教你如何善用它来提升个人效率 在下文中 我们将提供详细指南 让您能够充分利用ChatGP
  • 利用正则表达式对手机号、身份证、姓名脱敏(**模糊化)

    var phone 13623021456 var idcode 440582199612056666 var name 陈妹 var name1 陈美美 var name2 欧阳美美 phone phone replace 3 4 1 2
  • 【无线电力传输】12 V 直流风扇无线电力传输系统的实现(Simulink)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Simulink仿真实现 1 概述 经过实现 我们成功地开发出了一种无线电
  • shell脚本,一次性启动kafka集群

    版本centos6 5 64位操作系统 已配置JDK1 8 三个节点 在s121节点上可以免密登录到另外两个节点 另外kafka0 9 0 1的安装目录相同 修改了主机名 并在每个节点的hosts文件中设置了映射 脚本内容 bin bash
  • 关于git存储空间的注意

    摘自 https blog csdn net weixin 30411819 article details 97716808 utm medium distribute pc relevant none task blog BlogCom
  • 解决vxe-table复选框翻页选中问题

    解决vxe table复选框翻页选中问题 根据vxe table官方文档 想要保留勾选中的数据 我们的代码中需要设置 row id 和 checkbox config中的 reserve 属性 vxe table官方文档 简单写下html部