【ElementUI】el-table中复选框禁用处理

本文介绍了在 Vue 项目中使用 ElementUI 的 el-table 时,如何处理表格行和表头的复选框禁用状态。通过 `selectable` 回调函数控制行复选框,以及利用 `header-cell-class-name` 设置表头复选框的禁用样式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

Vue 项目开发过程中,尤其是后台管理开发,经常会用到 ElementUI 中的表格和表单,有时候我们需要在表格中添加复选框,来实现全选和单选当前行的操作,而这时如果有条件要限制选框是否禁用该如何处理呢?这就需要展开来说了,因为表头全选和表格行中的单个选择处理是不同的。

一、处理body中的复选框禁用

在这里插入图片描述

1.1 概述

在官方文档 Table-column 中有一回调函数 selectable 用于返回值用来决定这一行的 CheckBox 是否可以勾选,它仅对 type=selection 的列有效。函数有两个参数 Function(row, index):

  • row 当前行相关信息参数
  • index 当前行索引值

1.2 设置复选框的 column

代码如下:

<el-table-column
   type="selection"
   width="60"
   slign="center"
   :selectable="enableSelect">
</el-table-column>

定义这个函数,并添加相关条件
当前是查看详情页面,或者编辑页面的当前行被禁用时不可操作
返回值为 false 不可操作,默认为 true 可操作

enableSelect
你可以通过设置v-model的值为一个包含所有选中项value值的数组来实现复选框的全选。具体操作如下: 1. 在表头中添加一个全选的复选框,绑定一个全选的事件。 2. 在表格中的每一行添加一个复选框,绑定一个选中事件。 3. 在全选事件中,将所有行的选中状态改为与全选复选框相同的状态,并将选中的数据存入一个数组中。 4. 在选中事件中,将选中的数据存入数组中。 以下是示例代码: ```html <template> <div> <vxe-table ref="table" :data="tableData" :columns="columns" @checkbox-all="handleCheckAll" @checkbox-change="handleCheckChange" show-checkbox checkbox-config="{highlight:true}" ></vxe-table> </div> </template> <script> export default { data() { return { tableData: [ { id: 1, name: '张三', age: 18 }, { id: 2, name: '李四', age: 22 }, { id: 3, name: '王五', age: 25 } ], columns: [ { type: 'selection', width: 50, align: 'center' }, { field: 'id', title: 'ID' }, { field: 'name', title: '姓名', sortable: true }, { field: 'age', title: '年龄', sortable: true } ], selectedRows: [] } }, methods: { handleCheckAll(checked) { this.selectedRows = checked ? this.tableData : [] }, handleCheckChange(selectedRows) { this.selectedRows = selectedRows } }, watch: { selectedRows(val) { this.$emit('update:selectedRows', val) } } } </script> ``` 在上面的代码中,我们通过设置`show-checkbox`和`checkbox-config`属性来显示复选框,并且可以设置选中时是否高亮显示。`handleCheckAll`方法中,如果全选框选中,我们将所有行的状态改为选中,并将数据存入`selectedRows`数组中;如果全选框取消选中,我们将所有行的状态改为未选中,并将`selectedRows`数组清空。在`handleCheckChange`方法中,我们只需要将选中的数据存入`selectedRows`数组中即可。在`watch`中,我们将`selectedRows`数组中的数据通过`update:selectedRows`事件发送出去,这样父组件就可以获取到选中的数据了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MagnumHou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值