iview table后端分页 多选 翻页选中回显

在使用iview的Table组件进行后端分页时,遇到多选问题,即翻页会导致之前页码的选择状态丢失。解决办法是通过在data中保存选中项,并在获取新数据时恢复选中状态。可以参考相关博客文章进行实现。

 问题:在iview的table组件中,前端在多选时如果点击下一页则丢失了上一页table的多选数据(由于采用的后端分页,每次翻页会直接刷新为新数据)

定义data

 @Provide() selectedIds: any = new Set();

 

<Table border ref="selection" :columns="orderColums" :data="orderData" :loading="loadings.table" @on-select="handleSelectRow" @on-select-cancel="handleCancelRow" @on-select-all="handleSelectAll" @on-select-all-cancel="handleSelectAll">
            <template slot="loading"><Spin fix><Icon type="ios-loading" size=22 class="demo-spin-icon-load"></Icon></Spin></template>
          </Table>
// 处理table翻页选中的回显回来
    // cy 全选和取消全选时触发
    handleSelectAll (selection) {
      // 取消全选 数组为空
      if (selection.length === 0) {
        // cy 若取消全选,删除保存在selectedIds里和当前table数据的id一致的数据,达到,当前页取消全选的效果
        // 当前页的table数据
        let data
iViewtable 组件里,若要实现时反,关键在于记住各页选中的行数,并且在界面上随翻页正常示。由于采用后端分页,每次翻页会直接刷新为新数据,所以需要额外处理来保存和恢复选中状态。 可以利用 table 组件的 `on - change` 事件,在这个事件里记录选中的行数据。在每次翻页时,检查当前页的数据是否有之前选中的行,若有则将其设置为选中状态。 示例代码如下: ```vue <template> <Table :columns="columns" :data="tableData" @on - change="handleSelectionChange" ref="tableRef" :row - key="row => row.id" :selection - type="true" ></Table> </template> <script> export default { data() { return { columns: [ // 列配置 ], tableData: [], selectedRows: [] }; }, methods: { handleSelectionChange(selection, row) { // 记录选中的行 if (selection.length > 0) { const newSelected = selection.filter(item =>!this.selectedRows.some(selected => selected.id === item.id)); this.selectedRows = [...this.selectedRows,...newSelected]; } else { // 取消选中 this.selectedRows = this.selectedRows.filter(selected => selected.id!== row.id); } // 处理翻页后恢复选中状态 this.restoreSelection(); }, restoreSelection() { const currentPageData = this.tableData; const selectedIds = this.selectedRows.map(row => row.id); const toSelect = currentPageData.filter(row => selectedIds.includes(row.id)); this.$refs.tableRef.setSelection(toSelect); } } }; </script> ``` 在上述代码中,`handleSelectionChange` 方法用于记录选中的行数据,`restoreSelection` 方法用于在翻页后恢复选中状态。通过 `setSelection` 方法设置当前页应选中的行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值