ElementUI (el-table )添加、删除行,清空表格

效果图

在这里插入图片描述

Step1: 创建表格

用el-table创建表格,绑定data中数据

<el-table
          ref="multipleTable"
          :data="tableData" 
          tooltip-effect="dark"
          stripe
          class="man-table"
          style="width: 100%"
          @selection-change="handleDetailSelectionChange"
      >

data中:

data() {
    return {
      //选择框
      checkedDetail:[],
      // 表格数据
      tableData: [
        {
          id: "01",
          Type: "类型一",
          Time: "17:23",
          Info: "越界",
          Location: "lng: 161.32 ,  lat: 39.34",
          Workers: "王五",
          State: "处理中"
        },
        {
          id: "02",
          Type: "类型二",
          Time: "17:26",
          Info: "越界",
          Location: "lng: 161.34 , lat: 39.44",
          Workers: "李四",
          State: "处理完成"
        }
      ],
 }

@selection-change为勾选框改变事件,在选择勾选框时触发。

//单选框选中数据
    handleDetailSelectionChange(selection) {
      //如果缓存中已有数据,则清空
      if (selection.length > 1) {
        this.$refs.multipleTable.clearSelection();
        this.$refs.multipleTable.toggleRowSelection(selection.pop());
      } else {
        //将选中行存入缓存中
        this.checkedDetail = selection;
      }
    },

section本来是多选时选中项的数组,通过 this.$refs.multipleTable获取到这个el-table,提前需要给这个el-table设置

ref=“multipleTable”

需要提前声明checkedDetail

//选择框
checkedDetail:[]

添加行

<el-button 
     class="add-btn" 
     @click="handleAddDetails"
>添加</el-button>

methods中:

handleAddDetails() {
	  //如果数据为空,则重置
      if (this.tableData == undefined) {
        this.tableData = new Array();
      }
      let obj = {};
          obj.id:"03",
          obj.Type: "类型四",
          obj.Time "13:54",
          obj.Info: "越界",
          obj.Location: "lng: 161.32 , lat: 39.34",
          obj.Workers: "秦六",
          obj.State: "处理中"
         
      //push进this.tableData中
      this.tableData.push(obj);
    },

删除行

<el-button
     class="del-btn"
     icon="iconfont icon-shanchu"
     @click="handleDelete(scope.$index)"
></el-button>

methods中:

// 删除单个行
    handleDelete(index) {
      //console.log(this.tableData[index]);
      if (this.checkedDetail.length == 0) {
        this.$alert("请先选择要删除的数据", "提示", {
          confirmButtonText: "确定",
        });
      } else {
        this.tableData.splice(index, 1);
      }
    },

勾选后,勾选的内容存储到了checkedDetail中
所以在删除前判断是否选中了一行就可以通过判断其长度即可。

然后,首先判断是否选择了行,如果未选择行,则会给出提示,随后将此条数据在数据源中去掉即可实现删除一行。

splice方法是表示从第一个索引参数开始,删除第二个参数个元素。

清空表格

<el-button 
     class="del-btn" 
     icon="el-icon-delete" 
     @click="Clear"
>清空</el-button>

methods中:

//清空List
    Clear(){
      this.tableData=undefined;
    }

清空List很简单,将tableData设为undefined即可

<template> <div> <div> <!--搜索栏--> <el-input v-model="name" placeholder="请输入菜单名称" style="width: 200px" prefix-icon="el-icon-user"></el-input> <el-button class="el-icon-search" style="margin-left: 10px" type="primary" @click="load">查询</el-button> <el-button class="el-icon-refresh" style="margin-left: 10px" type="warning" @click="reset">重置</el-button> </div> <div style="margin-top: 20px;margin-bottom:35px;"> <!-- 新增、批量删除 --> <el-button class="el-icon-plus" style="margin-right: 10px" type="success" @click="save(null)">新增</el-button> <el-button class="el-icon-close" style="margin-left: 10px" type="danger" @click="deleteByids" >批量删除</el-button> </div> <el-table :data="tableData" border stripe :header-cell-style="getRowClass" @selection-change="handleSelectionChange" row-key="id" border default-expand-all> <el-table-column type="selection" width="55"></el-table-column> <el-table-column prop="id" label="id"></el-table-column> <el-table-column prop="name" label="菜单名称"></el-table-column> <el-table-column prop="path" label="菜单路径"></el-table-column> <el-table-column prop="icon" label="菜单图标"> <template v-slot:default="scope"> <i :class="scope.row.icon"></i> </template> </el-table-column> <el-table-column prop="pagePath" label="页面路径"></el-table-column> <el-table-column prop="description" label="菜单描述"></el-table-column> <el-table-column prop="sortNum" label="排序"></el-table-column> <el-table-column label="操作" width="300"> <template v-slot="scope"> <div class="action-buttons"> <!-- 添加容器方便布局 --> <el-button type="success" size="mini" class="compact-btn" @click="save(scope.row.id)" v-if="!scope.row.pid && !scope.row.path">新增子菜单</el-button> <el-button type="prima
最新发布
03-29
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NJR10byh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值