【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项目中使用。

