Vue3+Element plus 实现表格可编辑

复制代码

<template> <div> <el-button type="primary" @click="handleAdd"> 新增 </el-button> </div> <div> <el-table :data="tableData" style="width: 100%" border @cell-click="showUnitInput" > <el-table-column prop="date" label="Date"></el-table-column> <el-table-column prop="name" label="Name"> <template #default="{ row, column }"> <el-input v-if=" tableRowEditId === row.id &&tableColumnEditIndex === column.id" @blur="blurValueInput(row, column)" @keyup.enter="blurValueInput(row, column)" v-model="row.name" /> <span v-else>{{ row.name }}</span> </template> </el-table-column> <el-table-column prop="address" label="Address"> <template #default="{ row, column }"> <el-input v-if=" tableRowEditId === row.id &&tableColumnEditIndex === column.id" @blur="blurValueInput(row, column)" @keyup.enter="blurValueInput(row, column)" v-model="row.address" /> <span v-else>{{ row.address }}</span> </template> </el-table-column> <el-table-column prop="value" label="Value"> <template #default="{ row, column }"> <el-input v-if=" tableRowEditId === row.id &&tableColumnEditIndex === column.id " @blur="blurValueInput(row, column)" @keyup.enter="blurValueInput(row, column)" v-model="row.value" /> <span v-else>{{ row.value }}</span> </template> </el-table-column> <el-table-column label="Operate"> <template #default="{ row }"> <el-button type="danger" link @click="handleDelete(row)">Delete</el-button> </template> </el-table-column> </el-table> </div> </template> <script setup> import { ref } from 'vue' let tableRowEditId = ref(null) // 控制可编辑的每一行 let tableColumnEditIndex = ref(null) //控制可编辑的每一列 const showUnitInput = (row, column) => { //赋值给定义的变量 tableRowEditId.value = row.id //确定点击的单元格在哪行 如果数据中有ID可以用ID判断,没有可以使用其他值判断,只要能确定是哪一行即可 tableColumnEditIndex.value = column.id //确定点击的单元格在哪列 } const blurValueInput = (row, column) => { // tableRowEditId.value = null // tableColumnEditIndex.value = null //在此处调接口传数据 } const tableData = ref([ { id:1, date: '2016-05-03', name: 'Tom', address: 'No. 189, Grove St, Los Angeles', value: '1' }, { id:2, date: '2016-05-02', name: 'Tom', address: 'No. 189, Grove St, Los Angeles', value: '2' }, { id:3, date: '2016-05-04', name: 'Tom', address: 'No. 189, Grove St, Los Angeles', value: '3' }, { id:4, date: '2016-05-01', name: 'Tom', address: 'No. 189, Grove St, Los Angeles', value: '4' } ]) const handleDelete = (row) => { const index = tableData.value.indexOf(row) if (index !== -1) { tableData.value.splice(index, 1) } } const handleAdd = () => { tableData.value.unshift({ id:tableData.value.length+1, date: '2016-05-05', name: 'Tom', address: 'No. 189, Grove St, Los Angeles', value: tableData.value.length+1 }); } </script> <style> </style>
复制代码

效果图:

 

posted @   WinnieIns  阅读(3740)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示