vue3实现表格单元格可编辑
以往编辑表格内容都是点击编辑按钮,进入编辑页面或弹窗对整行做编辑的效果。
而这次由于项目需要实现在表格内双击就能编辑对应单元格的功能,对于没有做过的我来说也是一个新挑战 。
需要达到的效果:
方案一
由于项目使用的是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实现表格单元格可编辑相关推荐
- 【表格单元格可编辑】vue-elementul简单实现table表格点击单元格可编辑,点击单元格变成弹框修改数据
前言 这是继我另一个帖子就是单元格点击变成输入框后添加的功能 因为考虑到有些时候修改单元格的信息可能点击后要修改很多,那一个输入框不好用 所以这时候就需要一个弹框可以把所有表单都显示出来修改 所以这里 ...
- 前端:LayUi监听表格单元格,编辑后恢复原数据
{# edit是固定事件名,table_lay-filter是table原始容器的属性 lay-filter="对应的值" #}table.on('edit(course_tabl ...
- vue 点击表格单元格可编辑
<el-table :data="tableList" @cell-click='getCell' :cell-class-name='getRowColumn'> & ...
- ElementUI table组件,表格组件,单击单元格可编辑逻辑
ElementUI table组件,表格组件,单击单元格可编辑逻辑 1.表格部分 <el-table:data="seatDataFilter"@cell-click=&qu ...
- ligerui 表格中设置单元格不可编辑,添加行,删除行
一.需求:开发个表格grid用来显示维护线路段,出发地和目的地已经确定,需要维护中间路段 二.解析: 1.既然出发地和目的地已经确定,那么出发地和目的地是不可以编辑的,因为附带有其他字段是可以编辑的, ...
- layui编辑表格单元格
在日常的学习或开发后台管理这一块时,很多时候会有表格中的单元格可编辑操作.下面我们来了解一下关于layui.table中的单元格编辑事件: 在layui.table数据表格文档中-cols表头参数一览 ...
- 关于.net Microsoft.Office.Interop.Word组建操作word的问题,如何控制word表格单元格内部段落的样式。...
控制word表格单元格内部文字样式.我要将数据导出到word当中,对于word表格一个单元格中的一段文字,要设置不同的样式,比如第一行文字作为标题要居中,加粗,第二行为正常的正文. 代码如下 publ ...
- elementui可编辑单元格_ElementUI table组件实现点击单元格可编辑
最近由于公司开始使用elementUI,但是我发现网上关于elementui的问题很少,只能靠看官方文档解决慢慢摸索,开发的过程中需要用到对表格的单元格进行编辑,百度也找不到,只好自己慢慢研究一下,下 ...
- html中如何定义斜框,html表格单元格添加斜下框线的方法
一.分隔单元格的方法 1.用"transform: rotate(-55deg);"把一条水平线旋转一定角度就成斜线了 2.利用以下命令调整分割线位置等. :after :befo ...
最新文章
- pip install 报错:Versioning for this project requires either an sdist tarball, ...
- 从websphere6.1迁移到weblogic10.3的问题总结--转
- python 数据库表结构转为类_顺序表数据结构在python中的应用
- 【云上技术】中大型规模企业如何部署多数据中心?
- Jquery ajax json 不执行success的原因
- object address data read debug
- 《淘宝网开店 拍摄 修图 设计 装修 实战150招》一一1.2 选购镜头时应注意的事项...
- 130、 Android OkHttp完全解析(转载)
- Android Studio .jar 包的引用方式(导入方式)
- linux系统导航怎么刷安卓系统升级,4s送的10.2寸安卓导航刷机教程1
- mx350显卡天梯图_2020年显卡天梯图(2020.04月更新)
- MarkDown 下载-安装
- 无锡市计算机表演大赛,第二十七届中国儿童青少年计算机表演赛无锡赛区决赛-无锡少年宫.DOC...
- 学计算机拼音摇号,拼音真的很难教?要不要提前学?我们一起陪娃做好这些就够了!...
- 小猿日记(9) - 今天,我又拒绝了阿里的一次机会
- 苹果手机微信中打开app下载链接跳转不到app store怎么办
- 游戏盾,有效解决游戏行业安全管理问题
- java面试基础复习----基础的基础(1)
- 超融合一体机如何影响私有云部署
- 翻译1The high-volume return premium(后附读后感)(图表上传不了)