vue3+elementPlus+ts table合并select选择框,解决全选后再一个个取消全选状态还在的问题

首先需要两个字段分别存储当前行选中数据和所有选中数据;

@selection-change="handleSelectionChange"//selected

@select="selectCur"写进el-table标签里;//selectCurRow

之后从vue里引入watch。当选中数据变化后,先判断当前点击数据是取消还是选中,如果是选中,那么selected数组里一定有selectCurRow的数据(selected.value.indexOf(selectCurRow.value) > -1)此条件为true,否则就是取消选中;然后根据自己系统业务需求从字段里找出和让select合并的同一个字段进行判断,将合并的数据同步勾选状态。

watch(

selected,

(newValue: any) => {

console.log(newValue, "watch");

if (selected.value.indexOf(selectCurRow.value) > -1) {

console.log("选中进来了");

tableData.value.forEach((item: any) => {

if (selectCurRow.value.logicId === item.logicId && selectCurRow.value.id !== item.id) {

proTableRef.value.element.toggleRowSelection(item, true);

}

});

} else {

console.log("取消进来了");

tableData.value.forEach((item: any) => {

if (selectCurRow.value.logicId === item.logicId) {

proTableRef.value.element.toggleRowSelection(item, false);

}

});

}

console.log("selected", selected.value);

},

{ immediate: true }

);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
如果您想在加载时自动选中所有复选框,可以将el-table中的表格数据(data)中的每个对象的选中属性(selected)设置为 true。如果您想在加载时自动取消所有复选框的选中状态,则可以将其设置为 false。 以下是代码示例: ```html <el-table :data="tableData" style="width: 100%"> <el-table-column type="selection" :selectable="row => row.selectable"> </el-table-column> <el-table-column prop="name" label="Name"> </el-table-column> <el-table-column prop="age" label="Age"> </el-table-column> </el-table> ``` ```javascript data() { return { tableData: [{ name: 'John', age: 18, selectable: true, selected: true // 默认全选 }, { name: 'Tom', age: 25, selectable: true, selected: false // 默认不选 }, { name: 'Jane', age: 30, selectable: true, selected: true // 默认全选 }] }; }, ``` 如果您需要在用户单击全选框时,选择取消所有其他单元格中的复选框,可以使用以下方法: ```html <el-table :data="tableData" style="width: 100%"> <el-table-column type="selection" :selectable="row => row.selectable" :reserve-selection="true" @select-all="handleSelectAll" > </el-table-column> <el-table-column prop="name" label="Name"> </el-table-column> <el-table-column prop="age" label="Age"> </el-table-column> </el-table> ``` ```javascript methods: { handleSelectAll(rows) { if (rows.length === 0) { // 取消全选时 this.tableData.forEach(row => { row.selected = false; }); } else { // 全选时 this.tableData.forEach(row => { if (row.selectable) { row.selected = true; } }); } }, }, ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值