el-table加分页后多选翻页和查询后仍保持选中状态及回显

需求:使用ElementUI的el-table组件,列表可以进行多选,并且翻页后选中的行状态仍然保留

一、解决思路:

1、在el-table中设置 :row-key=“getRowKeys”

2、在type为selection的el-table-column中添加:reserve-selection=“true”

3、在js的methods中加getRowKeys方法,即可实现table翻页及搜索查询后仍保持之前的选中状态

二、代码具体实现

1、html

<el-table :data="tableData" ref="multipleTable" :row-key="getRowKeys" @selection-change="handleSelectionChange">
     <el-table-column width="48" type="selection" :reserve-selection="true"></el-table-column>
     <el-table-column label="序号" width="50" align="center">
         <template slot-scope="scope">{{ (pageCurrent - 1) * pageSize + scope.$index + 1 }}</template>
     </el-table-column>
     <el-table-column label="名称" prop="name" width="300" :show-overflow-tooltip="true"  align="left" />
 </el-table>

2、js

export default{
	data(){
		return {
			tableData: [],
			pageCurrent: 1,
	        pageSize: 10,
	        total: 0,
	        select: []
		}
	}
	methods:{
		// 1、获取列表数据
		 async getStep2TableData(){
		     const {code, data} = await companyList({
		         pageCurrent: pageCurrent,
		         pageSize: pageSize,
		     })
		     this.tableData = data.list
		     this.total = data.totalCount
		     this.setCheckedRows() //回显已勾选的数据
		 },
		 // 2、设置row-key
		 getRowKeys(row){
		    return row.id
		 },
		 // 3、勾选列表操作
		  handleSelectionChange(selection){
		     this.select = selection.map( (item) => item.id)
		  },
		  // 4、回显已勾选的数据
		  setCheckedRows(){
			let selectItem = []	
			this.tableData.forEach(item => {
            	this.select.forEach(id => {
                    if(item.id === id){
                        selectItem.push(item)
                    }
                })
            })
			this.$refs.multipleTable.toggleRowSelection(selectItem);	
		}
	}
}
  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
el-table的多选回显可以通过以下步骤实现: 1. 重写表格的多选与全选方法,因为表格自带的切换分页会清空选择的数据。 2. 父组件传递选中的数据给子组件。 3. 对传递的数据进行重新组织,以适应采购单位列表的字段。 4. 使用表格数据回显方法来将数据显示在表格中。 在el-table中实现多选回显需要使用以下两个API: 1. 使用v-model指令来绑定一个展示在另一张页面的数据组,这样就能实现数据的回显。 2. 使用this.$refs.multipleTable.toggleRowSelection(row, true)方法来设置选中的行,其中传入的row是关联此el-table的data数组中的元素。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [el-table多选数据回显](https://blog.csdn.net/lxhmm921/article/details/123841658)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [el-table(type=“selection“)多选框两种回显](https://blog.csdn.net/qq_50276105/article/details/128307456)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值