element plus e-table表格中使用多选,当翻页时已选中的数据丢失

摘要:

点击第一页选中两个,再选择第二页,选中,回到第一页,之前选中的要保留!


element ui table

解决办法: :row-key="getRowKeys" (写在el-table中)

bash 复制代码
methods中声明 getRowKeys()方法 
getRowKeys(row) {
  return row.id
},

:reserve-selection="true" (写在el-table-column中type为select的行中)

bash 复制代码
<el-table-column type="selection" :reserve-selection="true" width="44px" />

因为表格分页,点击会刷新第一页的数据的,只会加载第二页的数据,前面页面的数据是拿不到的,上面的还是不行的话加入@selection-change,当选择项发生变化时会触发该事件回调selection!

终极方法:

使用toggleRowSelection方法把数据硬塞进去

bash 复制代码
this.$nextTick(() => {
  // this.multipleSelection:第一页和第二页选中的数据数组, this.tableList是表格数据
   if (this.multipleSelection.length) {
       // this.$refs.elTable 当前表格ref
       this.$refs.elTable.clearSelection()

       this.multipleSelection.forEach(row => {
           const selectedRow = this.tableList.find(item => item.id === row.id)
           if(selectedRow){
               // 当前页(第一页)需要被选中的数据使其选中
               this.$refs.elTable.toggleRowSelection(selectedRow, true);
           }else{
               // 不在当前页(第二页)的数据,也硬塞到@selection-change的参数中,这时当你在第一页选中其他数据时,selection-change的参数也会带着第二页的数据
               this.$refs.elTable.toggleRowSelection(row, true);
           }
       })
   }
})

或者获取所有数据回来就更加好处理了!记录选中的,但是最傻了!

bash 复制代码
mounted(){
	init()
},
async init(){
	await setCheck()
	await getTableList()
},
// 这里是请求接口获取表格分页数据
getTableList(){
	// this.tableList = 
},
// 这里获取所有的数据
getAllTableList(){
	// 请求获取所有的数据,然后return出去
	// return allList
},
// 设置选中
async setCheck() {
	const allTableList = await getAllTableList()
	allTableList.forEach((item) => {
		if(ids.has(item.id)){
			this.$refs.elTable.toggleRowSelection(item, true)
		}
	})
}
相关推荐
用户9623779544816 小时前
原理分析 | Controller —— SpringBoot 内存马
javascript·后端
Simon_52016 小时前
Vue props传入function时的this指向问题_vue props function-CSDN博客
前端
写代码的皮筏艇16 小时前
replace方法
前端·javascript
C澒16 小时前
AI 生码 - API2CODE:接口智能匹配与 API 自动化生码实践
前端·低代码·ai编程
idcu16 小时前
Lyt.js AI:让前端开发进入智能生成时代
前端
idcu16 小时前
深入 Lyt.js 编译器:.lyt 文件如何增强 HTML 模板能力
前端
即答侠16 小时前
实时 AI copilot 的 4 级 fallback 设计:用户感知 0 中断,SLA 从 92% 拉到 99.6%
前端·人工智能
无心使然16 小时前
Openlayers调用ArcGis地图服务之五 —— 要素识别(/identify)
前端·vue.js·数据可视化
Dxy123931021616 小时前
HTML 如何设置 Div 阴影悬浮边框:从基础到进阶
前端·html·css3
好运的阿财16 小时前
OpenClaw工具拆解之browser+agents_list
前端·人工智能·机器学习·开源软件·ai编程·openclaw·openclaw工具