elementUI table 分页多选、回显、初始化选中和保存分页选中状态
在使用Element UI的Table组件进行分页时,多选、回显、初始化选中状态和保存选中状态可以通过以下方法实现:
- 多选:使用
selection-change
事件来监听选中项的变化。 - 回显:在
data
属性中设置初始数据,并在row-key
属性中指定唯一键的字段。 - 初始化选中状态:可以在
data
中的数据项上设置一个标志,表示该项是否被选中。 - 保存选中状态:可以在
selection-change
事件中更新一个变量,记录当前选中的行。
以下是一个简单的示例代码:
<template>
<el-table
:data="tableData"
border
@selection-change="handleSelectionChange"
row-key="id"
>
<el-table-column
type="selection"
width="55">
</el-table-column>
<el-table-column
prop="date"
label="日期"
width="180">
</el-table-column>
<el-table-column
prop="name"
label="姓名"
width="180">
</el-table-column>
<!-- 其他列 -->
</el-table>
</template>
<script>
export default {
data() {
return {
tableData: [], // 表格数据
selectedRows: [], // 存储选中行数据
};
},
methods: {
handleSelectionChange(val) {
this.selectedRows = val;
},
// 初始化选中状态的方法
initSelection() {
// 假设已知当前页的数据和需要选中的id列表
const currentPageDataIds = [/* 当前页的数据id列表 */];
this.tableData.forEach(row => {
if (currentPageDataIds.includes(row.id)) {
this.$refs.multipleTable.toggleRowSelection(row, true);
}
});
},
// 保存分页勾选状态的方法
saveSelectionState() {
// 将选中的行数据持久化,例如存入localStorage或者Vuex等
localStorage.setItem('selectedRows', JSON.stringify(this.selectedRows));
},
// 恢复分页勾选状态的方法
restoreSelectionState() {
// 从持久化存储中读取之前保存的选中状态
const selectedRows = JSON.parse(localStorage.getItem('selectedRows') || '[]');
this.tableData.forEach(row => {
this.$refs.multipleTable.toggleRowSelection(row, selectedRows.includes(row.id));
});
}
},
mounted() {
// 初始化表格数据
this.tableData = [/* 初始化表格数据 */];
// 初始化选中状态
this.initSelection();
// 恢复分页勾选状态
this.restoreSelectionState();
}
};
</script>
在这个示例中,handleSelectionChange
方法用于更新选中的行列表,initSelection
方法用于在表格数据加载时初始化勾选状态,saveSelectionState
方法用于保存当前勾选状态,而restoreSelectionState
方法用于从持久化存储中恢复之前保存的勾选状态。
注意:实际应用中,你需要根据你的数据和状态持久化方式来调整initSelection
、saveSelectionState
和restoreSelectionState
方法的实现。
评论已关闭