el-table中保留分页选中

news/2024/7/10 0:49:39 标签: vue, elementui, el-table, 前端, 表格, 分页多选

场景:对数据表格中数据进行选取,然后保存的数据操作。

对于数据表格,貌似这种需求不是非常常用,对于小数据量来说,checkbox就已经能够足够满足我们的要求,但往往对于大数据量可能需要通过表格来实现选择。

el-tableTable-column Attributes 中有这么一个属性:

属性描述类型可选值默认值
reserve-selection仅对 type=selection 的列有效,类型为 Boolean,为 true 则会在数据更新之后保留之前选中的数据(需指定 row-key)Booleanfalse

不过需要指定行的key,我们可以在el-table上加上一个row-key属性来指定key

最终代码如下

vue"><template>
	<el-table ref="dataTable" :data="tableList" :row-key="getRowKeys" border>
		<el-table-column type="selection" width="55" reserve-selection></el-table-column>
	</el-table>
</template>

<script>
	export default {
		data() {
			return {
				tableList: []
			}
		},
		methods: {
			// 获取行的key,用于表格保留分页选中
			getRowKeys(row) {
				return row.id;
			}
		}
	}
</script>

下面提供分页多选且赋初始选中的方案

vue"><template>
	<el-table ref="dataTable" :data="tableList" :row-key="getRowKeys" @select="handleSelectionChange" border>
		<el-table-column type="selection" reserve-selection></el-table-column>
	</el-table>
</template>

<script>
	import service from './service'
	export default {
		data() {
			return {
				tableList: [], // 表格数据
				defaultSelectedIds: [], // 默认选中数据ID
				multipleSelection: [] // 选中的所有行数据
			}
		},
		methods: {
			// 获取行的key,用于表格保留分页选中
			getRowKeys(row) {
				return row.id;
			},
			handleSelectionChange(selection, row) {
				// 判断如果是取消选中,且在defaultSelectedIds中含有的,则删掉
				const index = this.defaultSelectedIds.indexOf(row.id);
				if (this.multipleSelection.length > selection.length && index !== -1) {
					this.defaultSelectedIds.splice(index, 1);
				}
				this.multipleSelection = selection;
			},
			getTableList() {
				service.getDataList().then(res => {
					this.tableList = res.list;
					
					// 判断在defaultSelectedIds中含有的,通过方法去选中,保留defaultSelectedIds是因为defaultSelectedIds中的值无法对全部页选中
					this.$nextTick(() => {
						if (this.tableList && this.defaultSelectedIds) {
							this.tableList.forEach(row => {
								if (this.defaultSelectedIds.includes(row.id)) {
									this.multipleSelection.push(row);
									this.$refs.dataTable.toggleRowSelection(row, true);
								}
							});
						}
					});
				});
			}
		}
	}
</script>

http://www.niftyadmin.cn/n/4987966.html

相关文章

解决legend数据过多,使用滚动,但进行后图形样式发生变化

前言&#xff1a; 滚动前&#xff1a; 滚动后&#xff1a; 滚动前后&#xff0c;饼状图中的内容除了“城市规划”和“城市管理部件”两个分类进行了位置的交换&#xff0c;没有其他的变化&#xff0c;数据也没有增加&#xff0c;但是&#xff0c;样式就是不知道为啥发生了变化。…

window关闭chrome

os.system("taskkill /F /IM chrome.exe") os.system("taskkill /F /IM chromedriver.exe")

PAT甲级题库打卡—【最近考题A1132—后】—最新23.8.31

1 1132 Cut Integer 简单题&#xff0c;最后自己给自己挖了个坑。AC&#xff1a; #include<bits/stdc.h> using namespace std;//模拟typedef long long ll;int main() {int n;cin >> n;while(n--){string x;cin >> x;int x1 stoi(x);int num x.size() /…

shell超基础入门(超详细)

♥️作者&#xff1a;小刘在C站 ♥️个人主页&#xff1a; 小刘主页 ♥️努力不一定有回报&#xff0c;但一定会有收获加油&#xff01;一起努力&#xff0c;共赴美好人生&#xff01; ♥️学习两年总结出的运维经验&#xff0c;以及思科模拟器全套网络实验教程。专栏&#xf…

2024河南光伏展,河南郑州太阳能光伏展,郑州光伏产业展览会

2024第四届中国&#xff08;郑州&#xff09;太阳能光伏及储能产业展览会   时间&#xff1a;2024年2月26-28日 地点&#xff1a;郑州.中原国际博览中心 在过去的几年中&#xff0c;太阳能光伏及储能技术得到了快速的发展和广泛的应用。为了进一步推动这一产业的发展和进步&…

MR混合现实汽车维修情景实训教学演示

MR混合现实技术应用于汽车维修课堂中&#xff0c;能够赋予学生更加真实&#xff0c;逼真地学习环境&#xff0c;让学生在情景体验中不断提高自己的专业能力。 MR混合现实汽车维修情景实训教学演示具体体现在&#xff1a; 1. 虚拟维修指导&#xff1a;利用MR技术&#xff0c;可…

Go在安装Gin时出现Failed to connect 报错问题的解决方案(已解决)

在命令行中输入&#xff1a;go get -u github.com/gin-gonic/gin指令安装Gin第三方包时出现连接错误与连接超时的情况如下&#xff1a; 在较新版本的Go中引入了全新的包管理机制&#xff0c;出现上述错误可能是包管理机制设置不恰当的问题&#xff0c;尝试在终端窗口输入如下…

【行为树】py_trees 学习笔记

学习资料 《Introduction to behavior trees》 1. 概念说明 1.1 Action&#xff1a;pt.behaviour.Behaviour 在一个行为树中&#xff0c;Action 是一个叶节点&#xff08;Leaf Node&#xff09;&#xff0c;它实际执行某种行为或任务&#xff0c;并返回成功、失败或运行中的…