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

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

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

vue2+ElementUi里面使用如下:

在这里插入图片描述

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

 <el-tablekey="one"cellspacing="0"borderstyle="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-inputv-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'] = falsethis.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-inputref="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-inputv-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 = -1console.log(tableData.value)
}const handleDelete = (row) => {tableData.value.splice(tableData.value.indexOf(row), 1)
}
</script>
http://www.lryc.cn/news/191292.html

相关文章:

  • spring-创建Webservice服务
  • Maven系列第3篇:详解maven解决依赖问题
  • 读书笔记:多Transformer的双向编码器表示法(Bert)-4
  • Stable Diffusion XL搭建
  • 面试题-React(十一):性能优化之PureComponent和memo
  • <图像处理> Fast角点检测
  • 基于centos、alpine制作Java JDK基础镜像
  • 【AI视野·今日Robot 机器人论文速览 第五十二期】Wed, 11 Oct 2023
  • hive 知识总结
  • golang/云原生/Docker/DevOps/K8S/持续 集成/分布式/etcd 教程
  • jeecg库login登录过程分析笔记
  • echarts仪表盘vue
  • 管道和重定向分号-连接符
  • WSL VScode连接文件后无法修改(修改报错)
  • 迷你Ceph集群搭建(超低配设备)
  • Python数据挖掘项目实战——自动售货机销售数据分析
  • TortoiseGit使用教程
  • 如何测量GNSS信号和高斯噪声功率及载波比?
  • 动态壁纸软件iWall mac中文特色
  • xtrabackup全备 增备
  • 【广州华锐互动】灭火器使用VR教学系统应用于高校消防演练有什么好处?
  • Pymol做B因子图
  • EKF例程 matlab
  • 【C语言】atoi函数的模拟
  • JAXB 使用记录 bean转xml xml转bean 数组 继承 CDATA(转义问题)
  • Linux Centos安装Sql Server数据库,结合cpolar内网穿透实现公网访问
  • Vulnhub系列靶机---Raven: 2
  • 计算机视觉与深度学习 | 视觉惯性SLAM的基础理论
  • [电源选项]没有系统散热方式,没有被动散热选项
  • 房产中介租房小程序系统开发搭建