element中table的表格更新数据之后保留原来的勾选状态

该博客介绍了在使用Element UI的El-Table组件时,如何通过`reserve-selection`属性来保留数据更新后的选中状态。当`reserve-selection`设置为`true`并指定`row-key`时,可以保持用户选择的数据。同时,通过调用`clearSelection`方法可以在翻页时清除之前的选中状态,确保用户界面的正确行为。

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

reserve-selection: 仅对 type=selection 的列有效,类型为 Boolean,为 true 则会在数据更新之后保留之前选中的数据(需指定 row-key)

<el-table ref="table" :data="DataList" :row-key="rowKey">
    <el-table-column type="selection" align="center" :reserve-selection="true">
    </el-table-column>
</el-table>
	
methods: {
	rowKey (row) {
      return row.id;
    }
}

如果翻页不想保留之前选中的状态,可清空

this.$refs.table.clearSelection()
Element UI的表格组件中,当需要动态加载新数据并保持原有选择状态时,你可以采用以下步骤: 1. 首先,你需要确保每个表格行有一个唯一的标识符(通常是一个字段比如`id`),这将在后续操作中用于匹配。 2. 当新数据加载完成后,遍历新的数据数组,找到每个元素对应的旧数据项。如果旧数据项存在并且用户之前选中了它,就在新的表格设置对应行的状态为已选中。 ```javascript // 假设新数据为newData,旧数据为oldData,tableData是原始表格数据 let checkedItems = {}; // 存储已选中的项 if (oldData) { oldData.forEach((item) => { if (item.id && newData.find((newItem) => newItem.id === item.id)) { checkedItems[item.id] = true; // 如果有匹配项,则标记为已选中 } }); } // 更新表格数据 this.tableData = [...newData]; // 设置表格行的选中状态 this.$refs.table.selectAll({ keys: Object.keys(checkedItems), callback(row) { return checkedItems[row.key]; // 根据唯一标识符检查是否应选中当前行 }, }); ``` 3. 提供一个取消勾选的功能,你可以添加一个全局方法,接收用户点击事件,并清除相应的选中状态。 ```javascript methods: { toggleSelection(id) { this.checkedItems[id] = !this.checkedItems[id]; // 在这里更新表格的选中状态,同样通过唯一标识符查找 this.$refs.table.toggleRowSelection(id, this.checkedItems[id]); }, } ``` 4. 在表格的单元格上监听`@row-click`事件,以便在用户单击时触发`toggleSelection`方法。 ```html <el-table :data="tableData" ref="table"> <el-table-column type="selection"></el-table-column> <!-- 其他列 --> <el-table-column label="操作" prop="actions"> <template slot-scope="scope"> <el-button @click="toggleSelection(scope.row.id)">操作</el-button> </template> </el-table-column> </el-table> ```
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值