element框架table多选分页时保留原有选中项(vue2和vue3均适用)

element中table表格多选+分页
1、表格多选
手动添加一个 el-table-column,设 type 属性为 selection 即可;

<template>
<el-table
:data="tableData"
@selection-change="handleSelectionChange"
>
    <el-table-column type="selection" width="55" />
    <el-table-column property="name" label="Name" width="120" />
</el-table>
</template>
<script>
export default {
  name: "eleTable",
  data() {
    return {
        tableData: [{
              id:1,
              date: "2016-01-02",
              name: "王小虎",
              address: "上海市普陀区金沙江路 1518 弄"
            },
            {
              id:2,
              date: "2017-03-04",
              name: "王虎",
              address: "上海市普陀区金沙江路 1517 弄"
            },
            {
              id:3,
              date: "2017-04-01",
              name: "王小",
              address: "上海市普陀区金沙江路 1519 弄"
            },
            {
              id:4,
              date: "2016-05-03",
              name: "李三",
              address: "上海市普陀区金沙江路 1516 弄"
            }
        ],
    },
    methods:{
        //用户多选
        handleSelectionChange(e){
            sendForm.value.deptList = e;
        },
    }
}
</script>


2、分页时翻页保留原有选中项涉及属性

row-key【table属性】:行数据的 Key,用来优化 Table 的渲染; 在使用reserve-selection功能与显示树形数据时,该属性是必填的。
reserve-selection【Table-column 属性】:仅对 type=selection 的列有效, 请注意, 需指定 row-key 来让这个功能生效

<template>
<el-table
:data="selTabelData"
:row-key="selRowKey"
@selection-change="handleSelectionChange"
>
    <el-table-column type="selection" align="center" width="55" reserve-selection />
    <el-table-column property="name" label="Name" width="120" />
</el-table>
<el-pagination
layout="prev, pager, next"
hide-on-single-page
:current-page="selHoverPage"
:page-size="selPagesize"
:total="6"
@current-change="selPageChange"
>
</el-pagination>
</template>
<script>
export default {
  name: "eleTable",
  data() {
      selTabelData:[],//多选表格数据
      selHoverPage:1, //多选下分页当前选中页数
    selPagesize:2, //多选下分页每页条数限制 
  },
  mounted() {
      this.selTabelData = this.tableData.slice(0,this.selPagesize);
  },
  methods:{
      //为行设置独有key
      selRowKey(row){
        // console.log(row);
        return row.id
    },
    //多选下分页事件
    selPageChange(e){
        console.log(e);
        //重新调取接口获取数据,或者前端处理均可
        //this.selTabelData = this.tableData.slice(this.selPagesize*(e-1),this.selPagesize*e);
    },
    
  }
}
</script>


pagination分页属性:

current-page:当前页数【number】
page-size:每页显示条目个数,支持 .sync 修饰符【number】
pagination分页事件:

current-change:current-page 改变时触发


原文链接:https://blog.csdn.net/qq_43628158/article/details/128812823

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Ant Design of Vue 是一套基于 Vue.jsUI 组件库,其中包含了丰富的组件,包括表格组件。下面是一个带分页多选功能的 Ant Design of Vue 表格示例: ```html <template> <a-table :columns="columns" :data-source="dataSource" :pagination="pagination" row-selection="rowSelection" @change="handleTableChange"> </a-table> </template> <script> export default { data() { return { columns: [ { title: '姓名', dataIndex: 'name' }, { title: '年龄', dataIndex: 'age' }, { title: '地址', dataIndex: 'address' } ], dataSource: [], // 表格数据 pagination: { // 分页配置 current: 1, // 当前页码 pageSize: 10, // 每页显示条数 total: 0 // 数据总条数 }, rowSelection: { // 多选配置 selectedRowKeys: [], onChange: this.handleRowSelectionChange } } }, methods: { // 处理表格变化事件 handleTableChange(pagination) { this.pagination = pagination this.fetchData() }, // 处理多选变化事件 handleRowSelectionChange(selectedRowKeys) { this.rowSelection.selectedRowKeys = selectedRowKeys }, // 获取表格数据 fetchData() { // 发送异步请求获取数据 // ... // 设置表格数据和分页信息 this.dataSource = [] this.pagination.total = 100 } }, mounted() { // 初始化数据 this.fetchData() } } </script> ``` 在上面的代码中,`columns` 数组定义了表格的列信息,`dataSource` 数组存储了表格的数据,`pagination` 对象定义了分页信息,`rowSelection` 对象定义了多选配置。在 `a-table` 组件中,我们将这些配置传递给了组件,并设置了相应的事件回调函数。在 `handleTableChange` 方法中,我们处理了分页变化事件,在 `handleRowSelectionChange` 方法中,我们处理了多选变化事件。`fetchData` 方法用于获取表格数据,我们可以在其中发送异步请求获取数据,并设置表格数据和分页信息。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值