通过基础的Table表格来实现单元格内容的可编辑

1.首先定位到需要编辑的列,替换el-table-column
| <el-table-column label="Editable Column" width="300"> |
| <template #default="{ row, column, $index }"> |
| <el-input |
| size="small" |
| v-if=" |
| tableRowEditId === row.id && |
| tableColumnEditIndex === column.id |
| " |
| v-model="row.taskId" |
| @blur="blurUnitInput(row, column)" |
| @keyup.enter="blurUnitInput(row, column)" |
| /> |
| <span v-else class="hover-border">{{ row.taskId }}</span> |
| </template> |
| </el-table-column> |
复制
2.el-table 标签下面增加 cell-click 事件,当某个单元格被点击时会触发该事件
| <el-table :data="tableData" border style="width: 100%" @cell-click="showUnitInput"> |
| <el-table-column prop="date" label="Date" width="180" /> |
| <el-table-column prop="name" label="Name" width="180" /> |
| <el-table-column label="Editable Column" width="300"> |
| <template #default="{ row, column, $index }"> |
| <el-input |
| size="small" |
| v-if=" |
| tableRowEditId === row.id && |
| tableColumnEditIndex === column.id |
| " |
| v-model="row.taskId" |
| @blur="blurUnitInput(row, column)" |
| @keyup.enter="blurUnitInput(row, column)" |
| /> |
| <span v-else class="hover-border">{{ row.taskId }}</span> |
| </template> |
| </el-table-column> |
| </el-table> |
复制
3. 增加标识变量、事件方法,可以在 blurUnitInput 方法里面实现修改的接口
| const tableRowEditId = ref() |
| const tableColumnEditIndex = ref() |
| const showUnitInput = (row: any, column: any) => { |
| |
| |
| |
| tableRowEditId.value = row.id |
| tableColumnEditIndex.value = column.id |
| } |
| const blurUnitInput = (row: { [x: string]: boolean }, column: any) => { |
| tableRowEditId.value = null |
| tableColumnEditIndex.value = null |
| |
| console.log(row) |
| console.log(column) |
| } |
复制
4.增加一个样式,使可编辑的单元格鼠标悬停时显示虚线边框
| .hover-border { |
| border: none; |
| |
| } |
| |
| .hover-border:hover { |
| border: 1px dotted #165DFF; |
| padding: 2px; |
| } |
复制