以往编辑表格内容都是点击编辑按钮,进入编辑页面或弹窗对整行做编辑的效果。

而这次由于项目需要实现在表格内双击就能编辑对应单元格的功能,对于没有做过的我来说也是一个新挑战 。

需要达到的效果:

方案一

由于项目使用的是element-ui,所以一开始想到的就是去 table 组件找有没有能满足此需求的属性。没想到还真有(cell-dblclick)。

下面看实现效果(部分代码):

<template><divclass="Table main"><el-table:data="tableData"@cell-dblclick="tableEdit"><el-table-columnprop="name"label="姓名"width="150"></el-table-column><el-table-columnprop="amount1"label="数值1"show-overflow-tooltip><template#default="props"><span>{{props.row.amount1}}</span></template></el-table-column></el-table></div>
</template>
​
<script>tableData: [{name: '王小虎',amount1: '234',amount2: '3.2',amount3: 10,}],// 双击表格修改数据tableEdit(row, column, cell, event) {if (column.label==='数值1'||column.label==='数值2'||column.label==='数值3') {constbeforeVal=event.target.textContent;event.target.innerHTML='';conststr=`<div class='cell'><div class='el-input'><input type='text' placeholder='请输入内容'></div></div>`;cell.innerHTML=str;//  获取双击后生成的input  而且根据层级嵌套还会有所变化constcellInput=cell.children[0].children[0].children[0];cellInput.value=beforeVal;cellInput.focus(); // input自动聚焦// 失去焦点后  将input移除cellInput.onblur=function () {constonblurCont=`<div class='cell'>${cellInput.value}</div>`;cell.innerHTML=onblurCont; // 换成原有的显示内容};}},
</script>

这样,就可以了!可是真的可以了吗?

仔细看一下,觉得这种写法局限性还是太多,不够灵活,放弃使用。

方案二

思路:不使用el-table的 cell-dblclick 属性,设置一个变量,监听双击事件,去控制单元格展示的内容。

(部分代码):

<el-table :data="tableData.data"><el-table-columnv-for="prop in tabHeader":label="struct.fieldName":prop="prop"align="center"><template#default="scope"><divv-if="isEdit && scope.row.index === rowInd &&                            scope.column.index === colInd"><el-tooltip:content="desc"><el-inputv-if="struct.inputType === 'Input'&&struct.type==='Number'"v-model.number="scope.row[prop]"@blur="isEdit = false"@change="inputChange"></el-input><el-inputv-if="struct.inputType === 'Input'&&struct.type==='String'"v-model="scope.row[prop]"@blur="isEdit = false"@change="inputChange"></el-input></el-tooltip><el-selectv-if="struct.inputType === 'Select'"v-model="scope.row[prop]"@change="isEdit = false; inputChange()"><el-optionv-for="opt in options":label="opt" :value="opt" :key="opt"></el-option></el-select></div><divv-else@dblclick="dbCell(scope)"class="xiaoShou">{{scope.row[prop]}}</div></template></el-table-column></el-table>
// 双击 出现输入框
constdbCell= (a: any) => {isEdit.value=true;rowInd.value=a.row.index;colInd.value=a.column.index;
};

这种实现方法更简单、拓展性更高,而且符合编写习惯。

需要注意的地方是区分点击的是哪个单元格, 且下拉框不能使用blur。

vue3实现表格单元格可编辑相关推荐

  1. 【表格单元格可编辑】vue-elementul简单实现table表格点击单元格可编辑,点击单元格变成弹框修改数据

    前言 这是继我另一个帖子就是单元格点击变成输入框后添加的功能 因为考虑到有些时候修改单元格的信息可能点击后要修改很多,那一个输入框不好用 所以这时候就需要一个弹框可以把所有表单都显示出来修改 所以这里 ...

  2. 前端:LayUi监听表格单元格,编辑后恢复原数据

    {# edit是固定事件名,table_lay-filter是table原始容器的属性 lay-filter="对应的值" #}table.on('edit(course_tabl ...

  3. vue 点击表格单元格可编辑

    <el-table :data="tableList" @cell-click='getCell' :cell-class-name='getRowColumn'> & ...

  4. ElementUI table组件,表格组件,单击单元格可编辑逻辑

    ElementUI table组件,表格组件,单击单元格可编辑逻辑 1.表格部分 <el-table:data="seatDataFilter"@cell-click=&qu ...

  5. ligerui 表格中设置单元格不可编辑,添加行,删除行

    一.需求:开发个表格grid用来显示维护线路段,出发地和目的地已经确定,需要维护中间路段 二.解析: 1.既然出发地和目的地已经确定,那么出发地和目的地是不可以编辑的,因为附带有其他字段是可以编辑的, ...

  6. layui编辑表格单元格

    在日常的学习或开发后台管理这一块时,很多时候会有表格中的单元格可编辑操作.下面我们来了解一下关于layui.table中的单元格编辑事件: 在layui.table数据表格文档中-cols表头参数一览 ...

  7. 关于.net Microsoft.Office.Interop.Word组建操作word的问题,如何控制word表格单元格内部段落的样式。...

    控制word表格单元格内部文字样式.我要将数据导出到word当中,对于word表格一个单元格中的一段文字,要设置不同的样式,比如第一行文字作为标题要居中,加粗,第二行为正常的正文. 代码如下 publ ...

  8. elementui可编辑单元格_ElementUI table组件实现点击单元格可编辑

    最近由于公司开始使用elementUI,但是我发现网上关于elementui的问题很少,只能靠看官方文档解决慢慢摸索,开发的过程中需要用到对表格的单元格进行编辑,百度也找不到,只好自己慢慢研究一下,下 ...

  9. html中如何定义斜框,html表格单元格添加斜下框线的方法

    一.分隔单元格的方法 1.用"transform: rotate(-55deg);"把一条水平线旋转一定角度就成斜线了 2.利用以下命令调整分割线位置等. :after :befo ...

最新文章

  1. pip install 报错:Versioning for this project requires either an sdist tarball, ...
  2. 从websphere6.1迁移到weblogic10.3的问题总结--转
  3. python 数据库表结构转为类_顺序表数据结构在python中的应用
  4. 【云上技术】中大型规模企业如何部署多数据中心?
  5. Jquery ajax json 不执行success的原因
  6. object address data read debug
  7. 《淘宝网开店 拍摄 修图 设计 装修 实战150招》一一1.2 选购镜头时应注意的事项...
  8. 130、 Android OkHttp完全解析(转载)
  9. Android Studio .jar 包的引用方式(导入方式)
  10. linux系统导航怎么刷安卓系统升级,4s送的10.2寸安卓导航刷机教程1
  11. mx350显卡天梯图_2020年显卡天梯图(2020.04月更新)
  12. MarkDown 下载-安装
  13. 无锡市计算机表演大赛,第二十七届中国儿童青少年计算机表演赛无锡赛区决赛-无锡少年宫.DOC...
  14. 学计算机拼音摇号,拼音真的很难教?要不要提前学?我们一起陪娃做好这些就够了!...
  15. 小猿日记(9) - 今天,我又拒绝了阿里的一次机会
  16. 苹果手机微信中打开app下载链接跳转不到app store怎么办
  17. 游戏盾,有效解决游戏行业安全管理问题
  18. java面试基础复习----基础的基础(1)
  19. 超融合一体机如何影响私有云部署
  20. 翻译1The high-volume return premium(后附读后感)(图表上传不了)

热门文章

  1. 关于配置tft液晶屏时,屏幕不显示遇到的问题
  2. Flutter的原理及美团的实践(下,100%好评
  3. 无法通过windows功能控制面板自动安装或卸载windows server角色和功能
  4. 如何入驻832优选平台
  5. MVVM?继续搞一波
  6. 官方纯净版windows10教育版安装密钥极其下载地址
  7. switch 注册哪个服务器,switch注册教程
  8. 高通linux-多核启动以及CPU热插拔驱动
  9. 苹果春季发布会看点汇总
  10. 选择排序(升序排列)