vue3 实现 table 跨页多选

Vue3 配合 element-plus 实现表格的跨页多选,我们只需要去研究下官方配置的属性和事件即可。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
列表布局在这里插入图片描述

注意的是 要给多选框设定type类型为selection。

注意的是 getRowKeys 方法中我们获取的是项目列表的每一项的id ,有可能数据返回的字段并不是id,我们要对接到后端,确定每条数据的唯一性标识。

//实现跨页面多选
	const getRowKeys = (row: any) => {
	  return row.internalProblemId // row.id
	}

const handleSelectionChange = (val: any) => {
  emit('handleSelectionChange', val) // 即是被选中的数据,
}
我这里是推送出去的。
你也可以在你所需的页面定义个变量 ,接收 选中的数据 方便后边做处理。

接收的父组件页面事件处理
let delData= ref([]) // 选中的数据
//批量删除 表格复选框选中处理
const handleSelectionChange = (val: any) => {
  delData.value = val
}

做批量操作的一般都是删除,我这就直接用删除举例了。
const confirmDel = () => {
  let idList = delData.value?.map((v: any) => {
    return  v.projectProblemId
  })
  delBtnLoading.value = true
  projectDel(idList) // 删除接口方法调用,自己封装就好了。
}

这样就完成了 批量跨页选择。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现页多需要记录中的数据的ID,可以使用Vue的Reactive响应式对象来进行数据绑定和监听。具体实现步骤如下: 1. 定义一个空数组selected,用来存储中的数据的ID。 ```javascript import { reactive } from 'vue'; const state = reactive({ selected: [] }); ``` 2. 在表格的每一行中添加一个多框,绑定一个change事件,根据中状态添加或删除中的数据的ID。 ```html <template> <a-table :dataSource="data" :columns="columns"> <template #selection="{row}"> <a-checkbox v-model:checked="isSelected(row.id)" @change="handleSelect(row.id, $event.target.checked)"></a-checkbox> </template> </a-table> </template> ``` ```javascript const handleSelect = (id, checked) => { if (checked) { state.selected.push(id); } else { state.selected.splice(state.selected.indexOf(id), 1); } }; ``` 3. 在表格的分页组件中添加一个自定义的中项数量显示组件,根据selected数组的长度来显示中项的数量。 ```html <template> <div> <a-pagination :total="total" :current="current" @change="handleChange"></a-pagination> <span>已中 {{ selected.length }} 项</span> </div> </template> ``` 4. 在分页组件的change事件中,重新加载当前页的数据时,需要将之前中的数据的ID与当前页的数据进行比对,保留中状态。 ```javascript const handleChange = (page, pageSize) => { // 获取当前页的数据 const newData = fetchData(page, pageSize); // 比对中状态 const selectedIds = new Set(state.selected); newData.forEach(item => { if (selectedIds.has(item.id)) { item.selected = true; } }); // 更新表格数据 state.data = newData; }; ``` 这样就可以实现页多了。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值