element-ui el-table表格勾选框条件禁用,及全勾选按钮禁用, 记录

项目场景:

表格的部分内容是可以被勾选的,部分内容是不可以被勾选的
使用的是 “element-plus”: “^2.2.22”, 以上应该都是兼容的


问题描述

要求el-table表格中,部分内容不可以被勾选,全选框在没有可选内容时,是禁用状态

在这里插入图片描述

如上图所示,要求数据id是1或者2的数据不可被选择,当数据只剩下id为1和2的数据时,全选为禁用状态,当某一个全局值为true时,所有勾选框全部都是禁用状态

分析:

从描述来看,需求有以下几点
1、要求数据id是1或者2的数据不可被选择
2、当数据只剩下id为1和2的数据或者时,全选为禁用状态
3、当某一个全局值为true时,所有勾选框全部都是禁用状态

解决方案:

满足第一个条件:要求数据id是1或者2的数据不可被选择

<template>
	 <el-table :data="tableDatas" >
	       <el-table-column type="selection" fixed="left" :selectable="checkSelectable"/>
	       <el-table-column label='姓名' prop="name" />
	 </el-table>
</template>
<script setup>
const tableDatas = ref([
{ id:1, name:"张三"}{ id:2, name:"李四"}])
const checkSelectable = (row) => {
    if (row.id == 1 || row.id == 2) {
        return false
    } else {
        return true
    }
}
</script>

满足第二个条件:当数据只剩下id为1和2的数据或者时,全选为禁用状态
因为1和2不可被选择,所以他们只能剩下两条数据,由于全选框不能直接disable,所以需要给他加上样式

<template>
	 <el-table :data="tableDatas" :header-cell-class-name="cellClass">
	       <el-table-column type="selection" fixed="left" :selectable="checkSelectable"/>
	       <el-table-column label='姓名' prop="name" />
	 </el-table>
</template>
<script setup>
const tableDatas = ref([
{ id:1, name:"张三"}{ id:2, name:"李四"}])
const checkSelectable = (row) => {
    if (row.id == 1 || row.id == 2) {
        return false
    } else {
        return true
    }
}

const cellClass = (row) => {
    const list = tableDatas.value.filter((rowss) => {
        return (rowss.idx == 1 || rowss.idx == 16)
    })

    if (row.columnIndex === 0) {
        if (list.length == tableData.length) {
            return "DisableSelection"
        }
    }

}
</script>
<style scoped lang="less">
::v-deep {  //全选框用了fixed 用这个样式,没有用fixed就用下面那个样式
    .DisableSelection .cell .el-checkbox .el-checkbox__inner {
        background-color: var(--el-checkbox-disabled-input-fill) !important;
        border-color: var(--el-checkbox-disabled-border-color) !important;
        cursor: not-allowed !important;
    }
}

::v-deep .el-table .DisableSelection .cell .el-checkbox__inner{
    background-color: var(--el-checkbox-disabled-input-fill);
    border-color: var(--el-checkbox-disabled-border-color);
    cursor: not-allowed;
}

</style>

再满足第三个条件

<template>
	 <el-table :data="tableDatas" :header-cell-class-name="cellClass">
	       <el-table-column type="selection" fixed="left"  :selectable="checkSelectable"/>
	       <el-table-column label='姓名' prop="name" />
	 </el-table>
</template>
<script setup>
let ablestatus = true
const tableDatas = ref([
{ id:1, name:"张三"}{ id:2, name:"李四"}])
const checkSelectable = (row) => {
    if (row.id == 1 || row.id == 2 || ablestatus) {
        return false
    } else {
        return true
    }
}

const cellClass = (row) => {
    const list = tableDatas.value.filter((rowss) => {
        return (rowss.idx == 1 || rowss.idx == 16)
    })

    if (row.columnIndex === 0) {
        if (list.length == tableData.length || ablestatus ) {
            return "DisableSelection"
        }
    }

}
</script>
<style scoped lang="less">
::v-deep {  //全选框用了fixed 用这个样式,没有用fixed就用下面那个样式
    .DisableSelection .cell .el-checkbox .el-checkbox__inner {
        background-color: var(--el-checkbox-disabled-input-fill) !important;
        border-color: var(--el-checkbox-disabled-border-color) !important;
        cursor: not-allowed !important;
    }
}

::v-deep .el-table .DisableSelection .cell .el-checkbox__inner{
    background-color: var(--el-checkbox-disabled-input-fill);
    border-color: var(--el-checkbox-disabled-border-color);
    cursor: not-allowed;
}

</style>

就可以了 ,最后一个是完整代码,当然如果想在没有可选数据时,将全选按钮隐藏也可以把样式改成display:none,

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java_线程通信

一、线程通信 首先&#xff0c;什么是线程通信呢&#xff1f; 当多个线程共同操作共享资源时&#xff0c;线程间通过某种方式互相告知自己的状态&#xff0c;以相互协调&#xff0c;避免无效的资源挣抢。 线程通信的常见模式&#xff1a;是生产者与消费者模型 生产者线程负…

130基于MATLAB并结合IBD算法的盲迭代反卷积法进行图像复原

基于MATLAB并结合IBD算法的盲迭代反卷积法进行图像复原 ,输出复原前后图像&#xff0c;PSF频谱结果。程序已调通&#xff0c;可直接运行。 130 matlab盲迭代反卷积IBD (xiaohongshu.com)

入门教程:使用 Postman 发送 post 请求

Postman 是一个实用的开发工具&#xff0c;它让发送各类 POST 请求成为了可能&#xff0c;包括文本、JSON、XML 以及文件等。开发者利用此工具不仅能够检验API的功能性&#xff0c;还能仿真客户端的请求行为&#xff0c;进而深入了解客户端如何与 API 进行互动。 HTTP 协议中的…

在线旅游2024:新旧交锋,暗流涌动

旅游热带来的泼天富贵&#xff0c;还在继续传递。 2023年大火的“烧烤之都”淄博曾是最大受益者&#xff0c;小烧烤风靡整个夏天。最近的哈尔滨凭借冰雪和异域特色一举成为新晋“网红旅游城市”&#xff0c;元旦假期的游客接待量和旅游总收入双双达到历史峰值。 “网红城市”…

工具推荐:知识库软件有了这些就够了

在现代企业中&#xff0c;信息传播、知识共享至关重要。由于公司内部员工、组织结构、业务流程如此庞大且复杂&#xff0c;失效和过时的信息可能会进一步增加混乱&#xff0c;影响效率。因此&#xff0c;有一个强大的知识库软件可以帮助公司整合所有的知识资源&#xff0c;确保…

C# winform应用

C# winform应用 需求&#xff1a;导入Excel文件时需要执行其他操作&#xff0c;实现如果取消导入就不执行其他操作 C#代码实现 private bool DLimport0(string tablename, string datebasename, string buttonname){string xxx "";string Tag "";stri…

fopen函数

目录 fopen函数 fopen函数 C 库函数 fopen 使用给定的模式 mode 打开 filename 所指向的文件。 FILE *fopen(const char *filename, const char *mode)filename — 字符串&#xff0c;表示要打开的文件名称。mode — 字符串&#xff0c;表示文件的访问模式&#xff0c;该指针…

数据库系统概念 第七版 中文答案 第3章 SQL介绍

3.1 将以下查询使用SQL语言编写&#xff0c;使用大学数据库模式。 &#xff08;我们建议您实际在数据库上运行这些查询&#xff0c;使用我们在书籍网站db-book.com上提供的示例数据。有关设置数据库和加载示例数据的说明&#xff0c;请参阅上述网站。&#xff09; a. 查找计算机…

Spring系列学习九、Spring MVC的使用

Spring MVC的使用 一、MVC设计模式概述二、Spring MVC的工作原理三、HandlerMapping和ViewResolver四、 处理表单、文件上传和异常处理五、前端页面&#xff08;View&#xff09;编写1. 引入Thymeleaf模板引擎2.页面相关的示例代码3.后端处理代码编写 六、总结 本章我们将与大家…

客户端请求服务器的步骤

当我们在浏览器地址栏输入’http://www.xxx.com/api/xxx"时&#xff0c;客户端是如何找到服务器并发送请求的&#xff1f; 1.先找到服务器 a.检测浏览器缓存有没有缓存该域名对应的IP地址&#xff0c;有则通过IP地址取找服务器。 b.检测本地的hosts文件&#xff0c;是否有…

写点东西《2024 年决心:更加以开源为中心》

写点东西《2024 年决心&#xff1a;更加以开源为中心》 简而言之1- 使用 Taipy 代替 Tableau 2- 使用 Cal.com 代替 Calendly 3- Plausible 代替 Google Analytics4- AppFlowy 代替 Notion5- Penpot 代替 Figma 6- Fonoster 代替 Twilio 7- NextCloud 替代 Dropbox 8- Jitsi 替…

羊驼2:开放的基础和微调聊天模型--Llama 2论文阅读

论文地址&#xff1a;https://arxiv.org/pdf/2307.09288.pdfd 代码地址&#xff1a;GitHub - facebookresearch/llama-recipes: Examples and recipes for Llama 2 model 问答 用了多少个gpu&#xff1f; 这篇文档中使用了3.3M GPU小时的计算&#xff0c;使用的硬件类型是A…

解决elementUI或elementPlus的按钮点击后需要失去焦点才能恢复原本样式问题

废话不多说直接上代码&#xff0c;只需要在button中添加如下代码即可 focus"(e) > e.target.blur()"

无重复字符的最长字串

题目 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长子串 的长度。 示例 示例 1: 输入: s "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc"&#xff0c;所以其长度为 3。示例 2: 输入: s "bbbbb" 输出: 1 解…

虚拟政务大厅有什么好处,搭建虚拟政务大厅需要考虑哪些因素

引言&#xff1a; 在数字化时代&#xff0c;互联网技术推动了各行业发展&#xff0c;政务领域也不例外。虚拟政务大厅作为一种数字化解决方案&#xff0c;不仅改善了政务处理的效率和服务质量&#xff0c;还为政务处理带来了许多其他好处。 一、提高政务处理效率 1.虚拟政务大…

查询速度提升15倍!银联商务基于 Apache Doris 的数据平台升级实践

本文导读&#xff1a; 在长期服务广大规模商户的过程中&#xff0c;银联商务已沉淀了庞大、真实、优质的数据资产数据&#xff0c;这些数据不仅是银联商务开启新增长曲线的基础&#xff0c;更是进一步服务好商户的关键支撑。为更好提供数据服务&#xff0c;银联商务实现了从 H…

多模态大模型Clip

一、经典分类模型的问题: 类别固定当前的模型只能胜任一个任务&#xff0c;迁移到新任务上非常困难类别互斥当前的CV数据集标注劳动密集&#xff0c;成本较高&#xff0c;当前模型泛化能力较差 负样本的组成(Batchsize有N个文本-图像对) Batchsize太小&#xff0c;负样本太少…

SQL-DML增删改

&#x1f389;欢迎您来到我的MySQL基础复习专栏 ☆* o(≧▽≦)o *☆哈喽~我是小小恶斯法克&#x1f379; ✨博客主页&#xff1a;小小恶斯法克的博客 &#x1f388;该系列文章专栏&#xff1a;重拾MySQL &#x1f379;文章作者技术和水平很有限&#xff0c;如果文中出现错误&am…

SpringBoot+thymeleaf实战遇到的问题

目录 一、控制台&#xff1a; 二、数据库查询异常&#xff1a; 三、前后端错误校验 四、在serviceImp中需要添加一个eq条件&#xff0c;表示和数据库中的哪个字段进行比较&#xff0c;否则会查出所有数据&#xff0c;导致500 五、使用流转换数据更简洁 六、重复报错&#…

高周期的伦敦金交易机会转到低周期做 不可以吗?

一般的市场观点认为&#xff0c;交易信号出现在越高的时间周期上就越准确&#xff0c;成功的概率就越高。而低时间周期的信号&#xff0c;要推动高时间周期行情的发展&#xff0c;那几乎是不可能。因此多数人认为从高周期转到低周期&#xff0c;然后去捕捉高周期行情机会&#…
最新文章