当前位置: 首页 > article >正文

ElementPlus Table 表格实现可编辑单元格

通过基础的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) => {
  // console.log('row', row)
  // console.log('column', column)
  //赋值给定义的变量
  tableRowEditId.value = row.id //确定点击的单元格在哪行 如果数据中有ID可以用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;
}

http://www.kler.cn/a/445786.html

相关文章:

  • ViEW生命周期
  • Ubuntu上如何部署Nginx?
  • oracle client linux服务器安装教程
  • 使用Python实现量子通信模拟:探索安全通信的未来
  • 【STM32 Modbus编程】-作为主设备写入多个线圈和寄存器
  • Vue3 + Element-Plus + vue-draggable-plus 实现图片拖拽排序和图片上传到阿里云 OSS 父组件实现真正上传(最新保姆级)
  • 高中数学刷题版:集合与函数概念-函数的概念[笔记总结-干货]
  • WatchAlert - 开源多数据源告警引擎
  • 10. 考勤信息
  • Vue.js前端框架教程1:Vue应用启动和Vue组件
  • C++ STL 中有哪些容器?它们的主要区别是什么?
  • CSS系列(19)-- 主题切换详解
  • Redis(2)常用命令
  • deepin 安装 habse
  • 【AI驱动的泛型数据结构:智能计算的核心】
  • Vscode运行GO文件
  • 【自用】通信内网部署rzgxxt项目_02,前端pipeCloud部署(使用 nginx 部署 + NSSM 控制非窗口运行)
  • 模型优化和迁移学习
  • Windows安装Docker Desktop
  • VTK编程指南<十二>:VTK图像数据结构及图像创建与显示
  • 性能评估工具之unixbench
  • 大恒相机开发(2)—Python软触发调用采集图像
  • Ubuntu2404部署wikijs(非docker方式)
  • 前端项目性能优化(详细)
  • 存储过程(详细-附样例)
  • SSRF/文件上传详解