vuejs element table 表格添加行,修改,单独删除行,批量删除行操作

以下是“vuejs element table 表格添加行,修改,单独删除行,批量删除行操作”的攻略。

添加行

要添加行,首先需要在data中定义一个空的数组来存放表格数据。然后,在模板中使用el-table组件和el-table-column组件来渲染表格,并给el-table组件绑定数据源。

接下来,我们可以在模板中添加一个类似“添加行”的按钮,当用户点击这个按钮时,在data中定义的数据数组中新增一条数据,并将其渲染到表格中。

下面是一个简单的示例:

<template>
  <div>
    <el-table :data="tableData">
      <el-table-column prop="name" label="姓名"></el-table-column>
      <el-table-column prop="age" label="年龄"></el-table-column>
      <el-table-column prop="address" label="地址"></el-table-column>
      <el-table-column label="操作">
        <template #default="{ row }">
          <el-button type="text" size="small" @click="handleDelete(row)">删除</el-button>
        </template>
      </el-table-column>
    </el-table>
    <el-button type="primary" @click="handleAdd">添加行</el-button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      tableData: []
    }
  },
  methods: {
    handleAdd() {
      this.tableData.push({
        name: '',
        age: '',
        address: ''
      })
    }
  }
}
</script>

修改行

要修改行,我们可以在每一行的操作列中添加一个“编辑”按钮,用户点击该按钮时,可以弹出一个表单,允许用户修改该行数据。

我们需要在data中定义一个变量来存储当前正在编辑的行的索引,然后在模板中判断该变量的值,如果为当前行的索引,则显示表单用于修改数据,否则显示文本用于展示数据。

下面是一个示例:

<template>
  <div>
    <el-table :data="tableData">
      <el-table-column prop="name" label="姓名">
        <template #default="{ row }">
          <template v-if="editIndex === row.$index">
            <el-input v-model="row.name"></el-input>
          </template>
          <template v-else>{{ row.name }}</template>
        </template>
      </el-table-column>
      <el-table-column prop="age" label="年龄">
        <template #default="{ row }">
          <template v-if="editIndex === row.$index">
            <el-input v-model.number="row.age"></el-input>
          </template>
          <template v-else>{{ row.age }}</template>
        </template>
      </el-table-column>
      <el-table-column prop="address" label="地址">
        <template #default="{ row }">
          <template v-if="editIndex === row.$index">
            <el-input v-model="row.address"></el-input>
          </template>
          <template v-else>{{ row.address }}</template>
        </template>
      </el-table-column>
      <el-table-column label="操作">
        <template #default="{ row }">
          <el-button type="text" size="small" @click="handleEdit(row)">编辑</el-button>
          <el-button type="text" size="small" @click="handleDelete(row)">删除</el-button>
        </template>
      </el-table-column>
    </el-table>
  </div>
</template>

<script>
export default {
  data() {
    return {
      tableData: [
        { name: '张三', age: 18, address: '北京市' },
        { name: '李四', age: 20, address: '上海市' },
        { name: '王五', age: 22, address: '广州市' }
      ],
      editIndex: -1
    }
  },
  methods: {
    handleEdit(row) {
      this.editIndex = row.$index
    },
    handleDelete(row) {
      const index = this.tableData.indexOf(row)
      if (index !== -1) {
        this.tableData.splice(index, 1)
      }
    }
  }
}
</script>

单独删除行

要单独删除行,我们可以给表格中每一行的操作列添加一个“删除”按钮,用户点击该按钮时可以删除该行。

我们可以在模板中为每一行的操作列绑定一个方法,当用户点击该按钮时,将当前行作为参数传入方法。

下面是一个示例:

<template>
  <div>
    <el-table :data="tableData">
      <el-table-column prop="name" label="姓名"></el-table-column>
      <el-table-column prop="age" label="年龄"></el-table-column>
      <el-table-column prop="address" label="地址"></el-table-column>
      <el-table-column label="操作">
        <template #default="{ row }">
          <el-button type="text" size="small" @click="handleDelete(row)">删除</el-button>
        </template>
      </el-table-column>
    </el-table>
  </div>
</template>

<script>
export default {
  data() {
    return {
      tableData: [
        { name: '张三', age: 18, address: '北京市' },
        { name: '李四', age: 20, address: '上海市' },
        { name: '王五', age: 22, address: '广州市' }
      ]
    }
  },
  methods: {
    handleDelete(row) {
      const index = this.tableData.indexOf(row)
      if (index !== -1) {
        this.tableData.splice(index, 1)
      }
    }
  }
}
</script>

批量删除行

要批量删除行,我们可以在表格头部添加一个“全选”复选框,当用户勾选该复选框时,将所有行的选中状态都改变。我们还需要在每一行前添加一个复选框,用于单独选择行。

我们可以在模板中使用el-table-column组件来渲染复选框列和操作列。

下面是一个示例:

<template>
  <div>
    <el-table :data="tableData" ref="table">
      <el-table-column type="selection"></el-table-column>
      <el-table-column prop="name" label="姓名"></el-table-column>
      <el-table-column prop="age" label="年龄"></el-table-column>
      <el-table-column prop="address" label="地址"></el-table-column>
      <el-table-column label="操作">
        <template #default="{ row }">
          <el-button type="text" size="small" @click="handleDelete(row)">删除</el-button>
        </template>
      </el-table-column>
    </el-table>
    <el-button type="danger" @click="handleBatchDelete">批量删除</el-button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      tableData: [
        { name: '张三', age: 18, address: '北京市' },
        { name: '李四', age: 20, address: '上海市' },
        { name: '王五', age: 22, address: '广州市' }
      ]
    }
  },
  methods: {
    handleDelete(row) {
      const index = this.tableData.indexOf(row)
      if (index !== -1) {
        this.tableData.splice(index, 1)
      }
    },
    handleBatchDelete() {
      const selection = this.$refs.table.selection
      selection.forEach(row => {
        const index = this.tableData.indexOf(row)
        if (index !== -1) {
          this.tableData.splice(index, 1)
        }
      })
    }
  }
}
</script>

需要注意的是,使用el-table组件批量删除行时,需要先获取到选中的行,可以使用this.$refs.table.selection来获取。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vuejs element table 表格添加行,修改,单独删除行,批量删除行操作 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • java实现图书检索系统

    Java实现图书检索系统 系统概述 本系统是基于Java语言实现的图书检索系统,目的是为了方便用户快速查找所需图书,并提供相关的图书信息展示和操作。 该系统主要包括三个模块:用户模块、图书模块和管理模块。 用户模块:提供用户注册、登录、个人信息维护等功能。 图书模块:提供图书检索、借阅、归还、评论等功能。 管理模块:提供对图书、用户等信息的管理和操作。 系统…

    Vue 2023年5月28日
    00
  • Vue异步更新机制及$nextTick原理的深入讲解

    Vue异步更新机制及$nextTick原理的深入讲解 Vue框架的响应式系统是通过异步更新来实现的。例如,当组件中的数据发生变化时,Vue会将其放入更新队列,等到下次更新循环时统一进行更新操作。这种机制能够保证Vue的高效性能和可靠性,但同时也会给开发工作带来一些困扰。 典型问题 在使用Vue编写应用程序时,开发者经常会碰到一些典型问题,例如: 在DOM中使…

    Vue 2023年5月29日
    00
  • 详解从新建vue项目到引入组件Element的方法

    下面就是关于“详解从新建vue项目到引入组件Element的方法”的完整攻略: 一、新建vue项目 首先,在命令行窗口中执行以下命令,使用vue-cli创建一个新的vue项目: vue create my-project 其中,“my-project”是你想要命名的项目名称,你可以自己调整。 执行完该命令后,会提示你选择一个vue项目的配置模板,如果你是一个…

    Vue 2023年5月28日
    00
  • Vue实现时间轴效果

    下面是“Vue实现时间轴效果”的完整攻略。 简介 时间轴是一种用于展示时间进程的方式,通常由一条水平线和上面分布的时间事件点组成。在网站设计中,时间轴常用于展示历史时间线、流程进程等内容。本次攻略将介绍如何使用Vue来实现基础的时间轴效果。 示例代码 首先我们来看一个简单的示例代码,它展示了一个简单的时间轴效果。 <template> <d…

    Vue 2023年5月28日
    00
  • 如何基于Vue制作一个猜拳小游戏

    下面是基于Vue制作一个猜拳小游戏的完整攻略。 确定游戏规则 在开始制作小游戏之前,我们需要确定游戏规则。假设游戏规则如下: 双方玩家进行猜拳,猜拳的结果有石头、剪刀、布三种情况。 石头胜剪刀,剪刀胜布,布胜石头。 双方猜拳结果相同,平局。 玩家可以选择猜拳次数。 创建Vue应用 首先,我们需要创建一个Vue应用。我们可以使用Vue CLI来快速创建一个基本…

    Vue 2023年5月27日
    00
  • Mpvue中使用Vant Weapp组件库的方法步骤

    使用Vant Weapp组件库的方法步骤: 安装Vant Weapp 在cmd中进入mpvue项目根目录,执行以下命令进行安装: npm install vant-weapp -S –production 在 App.vue 中引入 Vant Weapp 在 App.vue 的 script 标签中如下添加: import Vant from ‘vant-…

    Vue 2023年5月27日
    00
  • 解决element DateTimePicker+vue弹出框只显示小时

    要解决element DateTimePicker+vue弹出框只显示小时的问题,可以按照以下步骤操作: 1. 引用element-ui库和相关组件 首先,在Vue项目中引入element-ui库,并按需引入DatetimePicker组件。 <template> <div> <el-date-picker v-model=&q…

    Vue 2023年5月29日
    00
  • Nuxt.js实现一个SSR的前端博客的示例代码

    下面就是“Nuxt.js实现一个SSR的前端博客的完整攻略”。 Nuxt.js简介 Nuxt.js 是一个基于 Vue.js 的通用应用框架,它可以帮助我们快速搭建一个 Vue.js 应用(如 SPA、SSR、静态 生成),并且还提供了自动化的构建和部署功能。 步骤 1. 创建项目 首先,我们需要安装 Node.js 和 Npm。然后,我们可以使用 Npm …

    Vue 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部