element table 表格实现上移、下移

这篇博客介绍了如何在前端实现表格数据的上移和下移功能,通过Vue.js的模板语法和数据操作方法,禁用边界情况的按钮,并提供moveUpward和moveDown方法进行数据交换,确保用户体验和功能的正确性。
摘要由CSDN通过智能技术生成

业务场景:有时候需要前端实现上移和下移功能

代码如下:

根据交互形式,我这里是把第一条数据的上移按钮置灰不可点击::disabled="scope.$index == 0";最后一条数据下移按钮置灰不可点击::disabled="(scope.$index + 1) == tableData.length"。

<template>
    <el-table
        :data="tableData">
        <el-table-column type="index" label="序号" width="60"></el-table-column>
        <el-table-column label="名称" prop="name"></el-table-column>
        <el-table-column label="操作">
            <template slot-scope="scope">
                <el-button type="text" style="padding:0" :disabled="scope.$index == 0" @click="moveUpward(scope.row, scope.$index)">上移</el-button>
                <el-button type="text" style="padding:0" :disabled="(scope.$index + 1) == tableData.length" @click="moveDown(scope.row, scope.$index)">下移</el-button>
            </template>
        </el-table-column>
    </el-table>
</template>
<script>
export default {
    data() {
        tableData: [
            {id: 1, name: '小明001'},
            {id: 2, name: '小红001'},
            {id: 3, name: '小强001'},
            {id: 4, name: '小刚001'},
            {id: 5, name: '小白001'},
            {id: 6, name: '小花001'}
        ]
    },
    methods: {
        moveUpward(row, index) {
            if (index > 0) {
                let upData = this.tableData[index - 1];
                this.tableData.splice(index - 1, 1);
                this.tableData.splice(index, 0, upData);
            } else {
                this.$message({
                    message: '已经是第一条,上移失败',
                    type: 'warning'
                });
            }
        },
        moveDown(row, index) {
            if ((index + 1) == this.tableData.length) {
                this.$message({
                    message: '已经是最后一条,下移失败',
                    type: 'warning'
                });
            } else {
                let downData = this.tableData[index + 1];
                this.tableData.splice(index + 1, 1);
                this.tableData.splice(index, 0, downData);
            }
        }
    }
}
</script>

 

  • 6
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值