zoukankan      html  css  js  c++  java
  • 关于element 框架中table表格选中并切换下一页之前选中数据消失的问题

    问题描述:

           在实际项目中使用element框架的table表格时,发现当前页选中了数据,点击切换下一页时,再选中数据,发现上一页选中的数据消失了。(目的是:要把用户选择的所有数据显示到页面上)

    代码如下:     

    <!-- html 代码 -->
    <table :data="tableData" @selection-change="handleSelectionChange" ref="multipleTable" :row-key="getRowKey"> // 3、行数据的key,用来优化table的渲染,在使用reserve-selection功能与显示树形数据时,该属性必填,支持多层访问,但不支持user.info[0].id这种,不过可以使用function
       <el-table-column type="selection" :reserve-selection="true"></el-taable-column>  //4、这个是选择框  reserve-selection 仅对type=selection的列有效,为true则会在数据更新之后保留之前选中的数据,需要指定row-key。
       <!--  省略掉其他 el-table-column 代码  -->
    </table>
    
    <!-- 分页  -->
    <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="currentPage" :page-size="pageSize" :page-sizes="[5,10,15]" layout="total,sizes,prev,pager,next" :total="total">
    </el-pagination>
    
    <div class="show-choose-data">
      //显示用户选中的所有数据   {{multipleSelectionAll }}
    </div>
    <!-- js 代码 --> 假定 我们选中的数据赋值给变量 multipleSelectionAll 首先: 在请求 tableData 数据的function 中做的一些操作: requestTableData:function(){ //请求回来数据后,进行两次循环,循环tableData 以及 multipleSelectionAll this.tableData.forEach((item,i)=>{ this.multipleSelectionAll.forEach((multItem,j)=>{ if(this.tableData[i].某id值 == this.multipleSelectionAll[j].某id值){ this.$refs.multipleTable.toggleRowSelection(this.tableData[i],true);//这步操作是让 页面显示选中的数据 } }) }) }, handleSelectionChange:function(val){ this.multipleSelectionAll = val //这步是将页面选中的数据赋值给 multipleSelectionALL ,选中的数据都存储在这个变量里面 }, getRowKey:function(row){ return row.某id值 }, handleSizeChange:function(val){ //调用请求 tableData 数据的接口,size 变化 }, handleCurrentChange:function(val){ //调用请求 tableData 数据的接口,currentpage 变化 }

    总结当前问题用到的知识点:

            1、用到 table 中的 toggleRowSelection 方法: 用于多选表格,切换某一行的选择状态,如果使用了第二个参数,则是设置这一行选中与否(selected 为true则选中) 参数为(row,selected) 。

            2、用到 table中的事件selection-change ,当选择项发生变化时会触发该事件。(3-4)

  • 相关阅读:
    Vue2 后台管理系统解决方案
    vuejs 和 element 搭建的一个后台管理界面
    Composer 是什么
    解决无限 This file is indented with tabs instead of 4 spaces
    (七)boost库之单例类
    (六)boost库之内存管理shared_ptr
    (五)boost库之随机数random
    (四)boost库之正则表达式regex
    (二)boost库之字符串格式化
    (一)boost库之日期、时间
  • 原文地址:https://www.cnblogs.com/sunnyeve/p/12028756.html
Copyright © 2011-2022 走看看