element plus el-table多选框跨页多选保留

一、基础多选配置

通过 type="selection" 开启多选列,并绑定 selection-change 事件获取选中数据

html 复制代码
<template>
  <el-table 
    :data="tableData" 
    @selection-change="handleSelectionChange"
  >
    <el-table-column type="selection" width="55" />
    <el-table-column prop="name" label="名称" />
    <!-- 其他列 -->
  </el-table>
</template>

<script setup>
const tableData = ref([...]);
const selectedData = ref([]);

const handleSelectionChange = (val) => {
  selectedData.value = val; // 获取选中数据
};
</script>

二、跨页多选保留

需设置 row-key 和 reserve-selection 属性实现跨页保留选中状态

html 复制代码
<el-table 
  :data="tableData" 
  row-key="id" 
  @selection-change="handleSelectionChange"
>
  <el-table-column 
    type="selection" 
    :reserve-selection="true" 
    width="55" 
  />
  <!-- 其他列 -->
</el-table>

三、条件控制可选状态

通过 selectable 属性动态控制行是否可选中

html 复制代码
<el-table-column 
  type="selection" 
  :selectable="(row, index) => row.status !== 'disabled'"
/>

四、手动回显选中数据

使用 toggleRowSelection 方法回显已选数据

html 复制代码
<el-table ref="tableRef" row-key="id">
  <!-- 列配置 -->
</el-table>

<script setup>
import { nextTick } from 'vue';

const defaultSelected = ref([...]); // 默认选中数据

// 回显方法
const initSelection = async () => {
  await nextTick();
  defaultSelected.value.forEach(row => {
    tableRef.value.toggleRowSelection(row, true);
  });
};
</script>

五、样式与交互优化

‌行点击触发多选‌:通过 @row-click 配合 toggleRowSelection 实现点击行选中

html 复制代码
<el-table @row-click="handleRowClick">
  <!-- 列配置 -->
</el-table>

<script setup>
const handleRowClick = (row) => {
  tableRef.value.toggleRowSelection(row);
};
</script>

‌调整多选框样式‌:通过自定义 CSS 覆盖默认样式(如间距、颜色等)。

六、注意事项:

id必须是表格数据中存在的key,请根据自己的表格数据结构来定义。

性能优化:跨页多选需结合分页接口动态加载数据,避免一次性加载全量数据。

完整示例可参考 Element Plus 官方文档或上述实现逻辑组合使用

相关推荐
灵感__idea1 小时前
JavaScript高级程序设计(第5版):好的编程就是掌控感
前端·javascript·程序员
试图让你心动3 小时前
原生input添加删除图标类似vue里面移入显示删除[jquery]
前端·vue.js·jquery
_Kayo_3 小时前
VUE2 学习笔记6 vue数据监测原理
vue.js·笔记·学习
陈琦鹏3 小时前
轻松管理 WebSocket 连接!easy-websocket-client
前端·vue.js·websocket
hui函数4 小时前
掌握JavaScript函数封装与作用域
前端·javascript
Carlos_sam5 小时前
Opnelayers:ol-wind之Field 类属性和方法详解
前端·javascript
小毛驴8505 小时前
创建 Vue 项目的 4 种主流方式
前端·javascript·vue.js
你这个年龄怎么睡得着的6 小时前
Babel AST 魔法:Vite 插件如何让你的 try...catch 不再“裸奔”?
前端·javascript·vite
Dream耀7 小时前
提升React移动端开发效率:Vant组件库
前端·javascript·前端框架
NUC_Dodamce8 小时前
Cocos3x 解决同时勾选 适配屏幕宽度和 适配屏幕高度导致Widget组件失效的问题
开发语言·javascript·ecmascript