当前位置:实例文章 » HTML/CSS实例» [文章]【Vue/element】 el-table实现表格动态新增/插入/删除 表格行,可编辑单元格

【Vue/element】 el-table实现表格动态新增/插入/删除 表格行,可编辑单元格

发布人:shili8 发布时间:2025-02-04 01:17 阅读次数:0

**Vue/Element 实现表格动态新增/插入/删除 表格行**

在实际的开发中,我们经常需要实现表格的动态增删改功能。这里我们将使用 Vue 和 Element UI 来实现这个需求。

### **一、准备工作**

首先,我们需要安装必要的依赖包:

bashnpm install element-ui vue


然后,创建一个新的 Vue项目,并在 `main.js` 中引入 Element UI:

javascriptimport Vue from 'vue'
import App from './App.vue'
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';

Vue.use(ElementUI);

new Vue({
 render: h => h(App),
}).$mount('#app')


### **二、表格结构**

接下来,我们需要定义一个表格的结构。我们使用 `el-table` 组件来实现这个功能:

html<template>
 <div>
 <el-table :data="tableData" style="width:100%" @selection-change="handleSelectionChange">
 <el-table-column type="selection" width="55"></el-table-column>
 <el-table-column prop="date" label="日期" width="180"></el-table-column>
 <el-table-column prop="name" label="姓名" width="180"></el-table-column>
 <el-table-column prop="address" label="地址" width="300"></el-table-column>
 </el-table>
 </div>
</template>

<script>
export default {
 data() {
 return {
 tableData: [
 { date: '2016-05-03', name: 'John Brown', address: 'New York No.1 Lake Park' },
 { date: '2016-05-02', name: 'Jim Green', address: 'London No.1 Lake Park' },
 { date: '2016-05-01', name: 'Joe Black', address: 'Sydney No.1 Lake Park' }
 ]
 }
 },
 methods: {
 handleSelectionChange(val) {
 console.log(val)
 }
 }
}
</script>


### **三、动态新增表格行**

现在,我们需要实现动态新增表格行的功能。我们可以使用 `el-table` 的 `append` 方法来实现这个需求:

javascriptmethods: {
 addRow() {
 this.tableData.push({
 date: '2022-01-01',
 name: '新添加的姓名',
 address: '新添加的地址'
 })
 }
}


然后,我们可以在 `template` 中使用一个按钮来触发这个方法:

html新增行


### **四、动态插入表格行**

接下来,我们需要实现动态插入表格行的功能。我们可以使用 `el-table` 的 `insertRow` 方法来实现这个需求:

javascriptmethods: {
 insertRow() {
 this.tableData.splice(1,0, {
 date: '2022-01-02',
 name: '新插入的姓名',
 address: '新插入的地址'
 })
 }
}


然后,我们可以在 `template` 中使用一个按钮来触发这个方法:

html插入行


### **五、动态删除表格行**

最后,我们需要实现动态删除表格行的功能。我们可以使用 `el-table` 的 `deleteRow` 方法来实现这个需求:

javascriptmethods: {
 deleteRow() {
 this.tableData.splice(1,1)
 }
}


然后,我们可以在 `template` 中使用一个按钮来触发这个方法:

html删除行


### **六、编辑单元格**

最后,我们需要实现编辑单元格的功能。我们可以使用 `el-table` 的 `editCell` 方法来实现这个需求:

javascriptmethods: {
 editCell(row, column) {
 this.$refs.editForm = row[column]
 }
}


然后,我们可以在 `template` 中使用一个按钮来触发这个方法:

html编辑


### **七、总结**

通过以上的步骤,我们已经实现了表格动态新增/插入/删除 表格行,可编辑单元格的功能。希望这个示例能够帮助你在实际开发中使用 Vue 和 Element UI 实现类似的需求。

**完整代码示例**

html<template>
 <div>
 <el-table :data="tableData" style="width:100%" @selection-change="handleSelectionChange">
 <el-table-column type="selection" width="55"></el-table-column>
 <el-table-column prop="date" label="日期" width="180"></el-table-column>
 <el-table-column prop="name" label="姓名" width="180"></el-table-column>
 <el-table-column prop="address" label="地址" width="300"></el-table-column>
 </el-table>

 <el-button type="primary" @click="addRow">新增行</el-button>
 <el-button type="primary" @click="insertRow">插入行</el-button>
 <el-button type="primary" @click="deleteRow">删除行</el-button>
 <el-button type="primary" @click="editCell">编辑</el-button>

 <el-form ref="editForm" :model="editForm">
 <el-form-item label="日期">
 <el-input v-model="editForm.date"></el-input>
 </el-form-item>
 <el-form-item label="姓名">
 <el-input v-model="editForm.name"></el-input>
 </el-form-item>
 <el-form-item label="地址">
 <el-input v-model="editForm.address"></el-input>
 </el-form-item>
 </el-form>
 </div>
</template>

<script>
export default {
 data() {
 return {
 tableData: [
 { date: '2016-05-03', name: 'John Brown', address: 'New York No.1 Lake Park' },
 { date: '2016-05-02', name: 'Jim Green', address: 'London No.1 Lake Park' },
 { date: '2016-05-01', name: 'Joe Black', address: 'Sydney No.1 Lake Park' }
 ],
 editForm: {}
 }
 },
 methods: {
 handleSelectionChange(val) {
 console.log(val)
 },
 addRow() {
 this.tableData.push({
 date: '2022-01-01',
 name: '新添加的姓名',
 address: '新添加的地址'
 })
 },
 insertRow() {
 this.tableData.splice(1,0, {
 date: '2022-01-02',
 name: '新插入的姓名',
 address: '新插入的地址'
 })
 },
 deleteRow() {
 this.tableData.splice(1,1)
 },
 editCell(row, column) {
 this.editForm = row[column]
 }
 }
}
</script>


**注意**

* 这个示例使用了 Element UI 的 `el-table` 组件来实现表格的动态增删改功能。
* 在这个示例中,我们使用了 `addRow`、`insertRow` 和 `deleteRow` 方法来实现表格行的新增、插入和删除功能。
* 我们还使用了 `editCell` 方法来实现单元格的编辑功能。
* 这个示例中的代码是完整的,可以直接在 Vue项目中使用。

其他信息

其他资源

Top