vue3 Table数据预勾选、翻页、勾选操作、全选等操作数据更新

表格视图代码

<el-table ref="multipleTableRef" :data="tabledata" border header-cell-class-name="table-header"
	highlight-current-row :row-key="getRowKeys" @select="handleSelect" @select-all="selectall">
	<el-table-column type="selection" width="55" :reserve-selection="true" />
	<el-table-column prop="id" label="ID" />
	<el-table-column prop="name" label="名称" />
	<el-table-column prop="age" label="年龄" />
	<el-table-column prop="city" label="城市" />
</el-table>

:row-key="getRowKeys" && :reserve-selection="true" // 翻页不置空选中需用到此方法和属性(行数据的 Key,用来优化 Table 的渲染; 在使用reserve-selection功能与显示树形数据时,该属性是必填的。)

@select="handleSelect" 当用户手动勾选数据行的 Checkbox 时触发的事件-勾选操作

@select-all="selectall" 当用户手动勾选全选 Checkbox 时触发的事件-全选(选中和取消)

数据定义

interface TableCommit {
id: number;
name: string; 
age: number; 
city: string; 
}
const multipleTableRef = ref<InstanceType<typeof ElTable>>()
// 列表数据
var tabledata = ref<TableCommit[]>([]); 
// 添加数据
var addform = reactive([]);

数据操作

// 翻页不置空选中需用到此方法
const getRowKeys = (row: any) => {
return row.id;
};
//请求数据预勾选数据
const handleCommitSearch = () => {
getTabledata(params).then((res: any) => {
tabledata.value = res.data;
 // 处理修改选择的数据勾选
	nextTick(() => {
		getTabledata.value.forEach((item) => {
			multipleTableRef.value!.toggleRowSelection(item, true);
	});
});
}

// 勾选
const handleSelect = (selection: any, row: any) => {
  //选中元素在数组里面代表选中--添加
if (selection.includes(row)) {
	addform.push(row);
} else {
	//选中元素不在数组里面代表取消选中--移除
	addform.splice(addform.indexOf(row), 1);
}
}
  
// 全选or全取消
const selectall = (rows: any) => {
if (rows.length == 0) {
	// 取消全选操作(如果用户已全选再取消,取消的数据不可得)需要借助请求展示在列表的数据
  // 借助列表的数据做移除操作
	tabledata.value.forEach((element: any) => {
		addform.splice(addform.indexOf(element.), 1);
	});
	} else {
	// 全选操作
	rows.forEach((element) => {
		addform..push(element.);
	});
   // 数据去重
	addform = Array.from(new Set(addform));
	}
}

如果对您有帮助,帮忙关注点赞分享,您的鼓励是我更新最大的动力!谢谢~~

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刺-客

如果对您有点帮助,请给点支持~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值