Element ui实现tabel分页选中记忆功能

敲重点: :row-key=“getRowKeys”、:reserve-selection=“true” 、 type=“selection” 三者连用及可
1 、row-key : 行数据的 Key,用来优化 Table 的渲染;在使用 reserve-selection 功能与显示树形数据时,该属性是必填的。类型为 String 时,支持多层访问:user.info.id,但不支持 user.info[0].id,此种情况请使用 Function。
2、reserve-selection: 仅对 type=selection 的列有效,类型为 Boolean,为 true 则会在数据更新之后保留之前选中的数据(需指定 row-key)

 <el-table :data="infoLists" ref="multipleTable" :row-key="getRowKeys" :header-cell-style="headerStyle" border
                @select="handleSelectionChange">
        <el-table-column type="selection" :reserve-selection="true" width="55"></el-table-column>
        <el-table-column prop="productName" label="产品名称"></el-table-column>
        <el-table-column prop="productNumber" label="产品型号"></el-table-column>
        <el-table-column prop="productType" label="产品类型"></el-table-column>
        <el-table-column prop="productPrice" label="价格">
          <template slot-scope="scope">
            <span v-show="!empty(scope.row.productPrice)">¥{{scope.row.productPrice}}</span>
          </template>
        </el-table-column>
        <el-table-column prop="productImg" label="产品图片">
          <template slot-scope="scope">
            <van-image width="80" height="80" fit="cover" :src="scope.row.productImg"></van-image>
          </template>
        </el-table-column>
      </el-table>
getRowKeys(row) {
                return row.productId
},
let flag = list.some(v => v.productId == row.productId)  //  用于判断当前项选中状态,true-选中、false-取消  判断条件根据自己需求改动
handleSelectionChange(list, row) {
                let flag = list.some(v => v.productId == row.productId)
                if (flag) {
                    this.empty(this.form1.productList) ? this.form1.productList = list
                        : this.form1.productList = this.form1.productList.concat(row)
                } else {
                    this.form1.productList = this.form1.productList.filter(v => v.productId != row.productId)
                }
},
 // 设置默认选中的 (在获取分页数据及打开弹窗时调用 this.infoLists为可勾选列表)
            setSelectRow() {
                if (!this.dialogVisible) {
                    return
                }
                if(!this.empty(this.infoLists)){
                    this.infoLists.forEach(row=>{
                        this.$refs.multipleTable.toggleRowSelection(row, false)
                    })
                }
                if (!this.empty(this.form1.productList)&&!this.empty(this.infoLists)) {
                    this.form1.productList.forEach(row=>{
                        this.infoLists.forEach(trow=>{
                            if(row.productId == trow.productId){
                                this.$refs.multipleTable.toggleRowSelection(trow, true)
                            }
                        })
                    })
                }
            },

element ui提供了一个内置的表格组件(el-table),可以帮助开发者创建数据展示的表格。在表格中对数据进行分页是很常见的需求,element ui也提供了相应的支持。 要实现element ui table的分页功能,首先需要使用el-pagination组件来创建一个分页器。在el-table组件上添加一个v-bind:pagination属性,将分页器绑定到表格上。然后,通过设置el-table的属性项来配置分页功能,例如设置el-table的属性项v-bind:data,表示要展示的数据。可以从服务器端异步获取数据,也可以直接通过v-bind:data绑定本地的数据源。 在el-table上设置v-bind:page-size属性,表示每页显示的数据条数,并通过v-bind:current-page属性来设置当前所在页码。此外,还可以通过v-bind:total属性来设置数据总条数,用于计算总页数。 当分页器的页码或每页显示条数发生改变时,可以通过监听事件来获取新的数据然后更新到el-table中。可以监听el-table的@size-change事件和@current-change事件,分别表示每页显示条数和页码的变化。在事件处理函数中,可以修改v-bind:page-size和v-bind:current-page的值,并重新加载数据。 通过上述步骤,就可以实现element ui table的分页功能了。这种分页方式非常方便,可以根据实际需求快速配置并展示数据。同时,element ui还提供了其他一些参数配置,例如可以设置显示的页码按钮数量、是否显示跳转到指定页码的输入框等,根据实际需求进行配置即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值