ElementUI编辑表格单元格与查看模式切换的应用

news2025/6/21 18:25:25

需求:有时候在填写表单的时候,想要在输入的时候是input输入框的状态,但是当鼠标移出输入框失去焦点时,希望是查看的状态,这种场景可以通过 v-if实现

vue2+ElementUi里面使用如下:

在这里插入图片描述

1.el-table标签注册 @cell-click=“editName” :key=“randomKey”
2.在需要编辑的单元格el-table-column 加入template—input输入框

 <el-table
      key="one"
      cellspacing="0"
      border
      style="border-collapse: collapse;min-height: 65vh;"
      :data="tableData2"
      :cell-style="iCellStyle"
      :header-cell-style="tableHeaderColor"
      :row-class-name="TableRowClassName"
      :key="randomKey"
      @cell-click="editName"
      show-summary
    >
    
 <el-table-column prop="item2" label="晚目标" align="center">
        <template slot-scope="scope">
          <el-input
            v-if="scope.row[scope.column.property + 'isShow']"
            :ref="scope.column.property"
            v-model="scope.row.item2"
            @blur="alterData(scope.row, scope.column)"
          ></el-input>
          <span v-else>{{ scope.row.item2 }}</span>
        </template>
      </el-table-column>
      
</el-table>


data:{
randomKey: Math.random(),
}

methds:{

//编辑单元格事件更新
 editName(row, column) {
      row[column.property + 'isShow'] = true
      // refreshTable是table数据改动时,刷新table的
      this.refreshTable()
      this.$nextTick(() => {
        this.$refs[column.property] && this.$refs[column.property].focus()
      })
    },

  //表格触发事件
  alterData(row, column) {
      row[column.property + 'isShow'] = false
      this.refreshTable()
    },
    
    //更新表格
    refreshTable() {
      this.randomKey = Math.random()
    },

}

vue3+ElementPlus 表单编辑与查看模式切换的应用

方法一

在这里插入图片描述

在这里插入图片描述

实现思路:

具体实现如下:当flag=true时候展示el-input输入框(v-if=“row.flag”)
当flag=false时,展示else部分也就

部分,也就是查看模式的页面
当el-input失去焦点时候绑定一个toLook事件,将flag设置为false,进去查看模式
当div元素点击时触发一个toEdit事件,将flag设置为true,进入编辑模式

html

<el-table-column label="属性值名称">
  <template #default="scope">
 <el-input
   ref="inputArr"
   v-if="scope.row.flag"
   @blur="toLook(scope.row)"
   size="small"
   placeholder="请你输入属性值名称"
   v-model="scope.row.valueName">
</el-input>
    
              
   <div v-else @click="toEdit(scope.row)">{{ scope.row.valueName }}</div>
  </template>
</el-table-column>

js

const toLook = (row) => {
    row.flag = false 
}

const toEdit = (row) => {
  row.flag = true
  //nextTick:响应式数据发生变化,获取更新的DOM(组件实例)
  nextTick(() => {
    inputArr.value.focus()
  })
}

方法二:

点击编辑,使当前行需要修改的列变为 input 输入框

在这里插入图片描述

<template>
  <div class="p-10">
    <el-table :data="tableData" border>
      <el-table-column prop="date" label="Date"></el-table-column>
      <el-table-column prop="name" label="Name"></el-table-column>
      <el-table-column prop="address" label="Address"></el-table-column>
      <el-table-column label="Value">
        <template #default="scope">
          <span v-show="scope.$index !== editIndex">{{ scope.row.value }}</span>
          <el-input
            v-show="scope.$index === editIndex"
            v-model="scope.row.value"
          ></el-input>
        </template>
      </el-table-column>
      <el-table-column label="Operate">
        <template #default="{ row }">
          <el-button link @click="handleEdit(row)">Edit</el-button>
          <el-button type="primary" link @click="handleSave">Save</el-button>
          <el-button type="danger" link @click="handleDelete(row)"
            >Delete</el-button
          >
        </template>
      </el-table-column>
    </el-table>
  </div>
</template>

<script setup lang="ts">
import { ref } from 'vue'

const tableData = ref([
  {
    date: '2016-05-03',
    name: 'Tom',
    address: 'No. 189, Grove St, Los Angeles',
    value: '1'
  },
  {
    date: '2016-05-02',
    name: 'Tom',
    address: 'No. 189, Grove St, Los Angeles',
    value: '2'
  },
  {
    date: '2016-05-04',
    name: 'Tom',
    address: 'No. 189, Grove St, Los Angeles',
    value: '3'
  },
  {
    date: '2016-05-01',
    name: 'Tom',
    address: 'No. 189, Grove St, Los Angeles',
    value: '4'
  }
])
const editIndex = ref(-1)

const handleEdit = (row) => {
  editIndex.value = tableData.value.indexOf(row)
}

const handleSave = () => {
  editIndex.value = -1
  console.log(tableData.value)
}

const handleDelete = (row) => {
  tableData.value.splice(tableData.value.indexOf(row), 1)
}
</script>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1086590.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

非交互式ssh command无法找到命令command not found

起因 mha做check时无法获得node的版本 问题判断 分析下源码 执行的代码实际是 ssh $MHA::ManagerConst::SSH_OPT_ALIVE $ssh_user_host -p $ssh_port apply_diff_relay_logs --version 这里附一下ssh用的const SSH_OPT_ALIVE "-o ServerAliveInterval60 -o ServerAl…

MySQL 3 环境搭建 MySQL 5.7版本的安装、配置

MySQL5.7.43官网下载地址 MySQL :: Download MySQL Community Server 这里选5.7.43&#xff0c;Windows版本&#xff0c;然后点击Go to Download Page&#xff0c;下载msi安装包的版本 MSI安装包版本比ZIP压缩包版本的安装过程要简单的多&#xff0c;过程更加清楚直观&#x…

位运算解决简单逻辑推理问题

今天在学习Go语言中的位运算时&#xff0c;老师突然问我们位运算可以有哪些运用场景&#xff1f;这一点让我一下子想到了刷到的leetcode中的两道题目&#xff0c;例如丢失的数字和只出现一次的数字。有兴趣的小伙伴可以尝试做做看。 这两道题目都是用位运算解决的&#xff0c;并…

软考实行机考后,考前需要带什么?

软考实行机考之后&#xff0c;很多宝子们都在问考场需要带什么&#xff1f;今天给大家分享一下需要准备的东西~大家自行查看 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 2023年11月软考考前必看—考试需携带的物品 1、从2023年下半年开始&#xff0c…

网页博弈测试报告

文章目录 项目介绍项目测试用例自动化测试注册自动化测试登录自动化测试匹配测试 性能测试编写脚本创建测试场景性能测试报告 项目介绍 该项目是一个网页对战的五子棋游戏&#xff0c;支持真人匹配对战和人机对战&#xff0c;支持多用户同时匹配进行五子棋对战&#xff0c;通过…

mysql数据库 windows迁移至linux

1.打开navicat&#xff0c;选择一个数据库进行操作&#xff1a; 之后文件会保存为一个xxx.sql文件&#xff0c;之后打开xftp&#xff0c;把生成的sql放进一个文件夹中(/home/dell/linuxmysql)&#xff1a; 之后登录mysql数据库&#xff0c;并创建一个新的数据库&#xff0c;然后…

Pytorch之ConvNeXt图像分类

文章目录 前言一、ConvNeXt设计决策1.设计方案2.Training Techniques3.Macro Design&#x1f947;Changing stage compute ratio&#x1f948;Change stem to "Patchify" 4.ResNeXt-ify5. Inverted Bottleneck6.Large Kernel Size7.Micro Design✨Replacing ReLU wit…

论文阅读:Fast-BEV: Towards Real-time On-vehicleBird’s-Eye View Perception

Abstract 现有的BEV解决方案要么需要大量的资源执行车载推理&#xff0c;要么效果一般。Fast-BEV包含五部分&#xff1a; 1&#xff09;一个轻量化部署友好的视角转换方式&#xff0c;可以快速将2D图像特征转到3D体素空间。 2&#xff09;一个多尺度图像编码器利用多尺度特征。…

Mac/Wins Matlab如何查看APPs源码

查看Apps方法一样&#xff0c;点击HOME-preferences-MATLAB-Apps查看你的Apps安装路径。 你的Apps文件就安装在该目录下&#xff0c;直接进入这个目录就可以看到你自己写的APPs文件&#xff0c;

Fastjson历史版本记录

1.2.24 TemplatesImpl&#xff0c;利用条件苛刻&#xff0c;需要开启Feature.SupportNonPublicField {"type": "com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl","_bytecodes": ["yv66vgAAADQA...CJAAk"],"_name…

光通路数据单元(ODU),ODUk,同步传送模块(STM),虚容器(VC)等级

文章目录 ODUk同步传送模块&#xff0c;STM虚容器&#xff0c;VC时隙 光通路 数据 单元(ODU&#xff0c;Optical channel data unit) 提供与信号无关的连通性&#xff0c;连接保护和监控等功能&#xff0c;这一层也叫数据通道层。 ODUk&#xff0c;k值越大&#xff0c;帧周期越…

SpringBootCms

SpringBootCMS&#xff0c;极速开发&#xff0c;动态添加字段&#xff0c;自定义标签&#xff0c;动态创建数据库表并crud数据&#xff0c;数据库备份、还原&#xff0c;动态添加站点(多站点功能)&#xff0c;一键生成模板代码&#xff0c;让您轻松打造自己的独立网站&#xff…

spark读取hive表字段,区分大小写问题

背景 spark任务读取hive表&#xff0c;查询字段为小写&#xff0c;但Hive表字段为大写&#xff0c;无法读取数据 问题错误: 如何解决呢&#xff1f; In version 2.3 and earlier, when reading from a Parquet data source table, Spark always returns null for any column …

高防CDN:网络安全的锁与钥匙

深度解析高防CDN原理 高防CDN&#xff0c;一门整合防护与分发功能的互联网安全技术&#xff0c;以卓越之姿应对DDoS攻击等网络威胁&#xff0c;巧妙地辨识和过滤访问源地址&#xff0c;以保障用户畅通访问和服务的稳定。其核心原理包括&#xff1a; 流量清洗&#xff1a; 高防C…

mysql数据库语法改造成dm数据库DATE_SUB

给了一个任务就是把一个项目用dm数据库正常跑起来&#xff0c;真的难呀&#xff0c;项目原本是使用的mysql、 问题寻找 dm数据库保存&#xff0c;我看mysql跑的挺好的&#xff0c;然后开始找原因。 其中还没有看懂这两个函数&#xff0c;特意搜了搜 LAST_DAY 取最后一天 DATE_…

社区投稿| 以安全视角,深度剖析 Sui Staking 与 LSD

本篇技术研报由 MoveBit 研究团队的 Jason 撰写 #1 Sui Staking 介绍 1.1 Sui 网络概述 Sui 网络由一组独立的验证者运行&#xff0c;每个验证者在自己的机器或集群上运行独立的 Sui 软件实例。 Sui 采用委托权益证明&#xff08;DPoS&#xff09;来确定哪些验证者参与网络…

Bootstrap的下拉菜单组件相关知识

Bootstrap的下拉菜单组件依赖于第三方popper.js插件实现&#xff0c;popper.js插件提供了动态定位和浏览器窗口大小监测&#xff0c;所以在使用下拉菜单时确保引入了popper.js文件&#xff0c;并且要放在引用Bootstrap.js文件之前前。 目录 01-下拉菜单基本结构02-分裂式下拉菜…

世和基因NGS大Panel IVD产品获批上市

近日&#xff0c;国家药品监督管理局&#xff08;NMPA&#xff09;通过创新医疗器械特别审批&#xff0c;批准世和基因旗下南京世和医疗器械有限公司的非小细胞肺癌组织TMB检测试剂盒&#xff08;可逆末端终止测序法&#xff09;&#xff08;国械注准20233401452&#xff09;上…

验收测试的关键步骤您知道吗

验收测试是软件开发生命周期中的重要环节&#xff0c;用于验证项目交付是否符合用户需求和质量标准。本文将介绍验收测试的定义及实施验收测试的关键步骤。 一、验收测试的定义和目标 确保项目交付质量&#xff1a;通过主动验证和评估软件系统的功能、性能和质量&#xff0c;确…

JS调试技巧

插桩导出全局变量 在代码段中导出运行 1.先找到需要的调试的函数 2.删除逗号给后面的变量加VAR 3.用个window.变量去接收需要的函数&#xff0c;让他变成全局变量 4.直接执行 window.wang.md5(123123213123) eval&#xff0c;AA&#xff0c;OO,JJ导出混淆参数 重写evel…