el-table 实现行内修改
时间: 2023-10-17 13:23:53 浏览: 554
要实现 `el-table` 行内修改,可以按照以下步骤进行:
1. 在 `el-table` 中添加 `:row-key` 属性,用于指定表格数据的唯一标识,这样才能正确找到要修改的数据。
2. 在 `el-table-column` 中添加 `:editable="true"` 属性,表示该列可以进行编辑。
3. 在 `el-table-column` 中添加 `:edit-render` 属性,用于指定该列编辑时所使用的组件。可以使用 `el-input`、`el-select` 等组件,也可以自定义组件。
4. 在 `el-table` 中添加 `@cell-click` 事件,用于响应单元格的点击事件。在事件处理函数中,可以判断当前单元格是否为可编辑单元格,如果是,则将该单元格切换为编辑状态。
5. 在 `el-table` 中添加 `@cell-blur` 事件,用于响应单元格的失焦事件。在事件处理函数中,可以获取当前单元格的值,并更新表格数据。
以下是一个示例代码:
```html
<template>
<el-table
:data="tableData"
:row-key="row => row.id"
@cell-click="handleCellClick"
@cell-blur="handleCellBlur">
<el-table-column
prop="name"
label="姓名"
:editable="true"
:edit-render="nameEditRender">
</el-table-column>
<el-table-column
prop="age"
label="年龄"
:editable="true"
:edit-render="ageEditRender">
</el-table-column>
</el-table>
</template>
<script>
export default {
data() {
return {
tableData: [
{ id: 1, name: '张三', age: 20 },
{ id: 2, name: '李四', age: 25 },
{ id: 3, name: '王五', age: 30 }
]
}
},
methods: {
handleCellClick(row, column, event) {
if (column.editable) {
this.$refs.table.toggleRowEdit(row)
}
},
handleCellBlur(row, column, event) {
if (column.editable) {
row[column.property] = event.target.value
}
}
},
computed: {
nameEditRender() {
return (h, { row, column }) => {
return (
<el-input
v-model={row[column.property]}>
</el-input>
)
}
},
ageEditRender() {
return (h, { row, column }) => {
return (
<el-input-number
v-model={row[column.property]}>
</el-input-number>
)
}
}
}
}
</script>
```
在示例代码中,`el-table-column` 中的 `editable` 属性设置为 `true`,表示该列可编辑。`edit-render` 属性使用 `nameEditRender` 和 `ageEditRender` 方法分别指定了姓名和年龄列的编辑组件。
`@cell-click` 事件响应单元格的点击事件,在该事件处理函数中,使用 `toggleRowEdit` 方法切换行的编辑状态。
`@cell-blur` 事件响应单元格的失焦事件,在该事件处理函数中,更新表格数据。
阅读全文