广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >Vue+Element实现表格单元格编辑
  • 684
分享到

Vue+Element实现表格单元格编辑

2024-04-02 19:04:59 684人浏览 安东尼
摘要

前言 Element的表格组件并没有给出明确的点击单个单元格进行的编辑的方案,我仔细阅读了官方的文档后,发现这个操作还是可以实现的。 实现原理 1、利用Table组件的cell-cl

前言

Element的表格组件并没有给出明确的点击单个单元格进行的编辑的方案,我仔细阅读了官方的文档后,发现这个操作还是可以实现的。

实现原理

1、利用Table组件的cell-click属性,可以获取当前点击的单元格列对应的Dom元素。
2、清空所有的名为current-cell的class属性。
3、为当前获取的单元格Dom动态添加名为current-cell的class属性。
4、控制单元格的input标签的显示隐藏就能实现表格的编辑功能。

代码实现

<template>
  <div class="tableDiv">
    <el-table :data="tableData" highlight-current-row @cell-click="cellClick">
      <el-table-column
        v-for="(item, index) in tableColumn"
        :key="index"
        :prop="item.prop"
        :label="item.label"
        :width="item.width"
      >
        <template slot-scope="scope">
          <el-input
            v-if="item.edit"
            size="small"
            ref="tableInput"
            v-model="scope.row[item.prop]"
            @blur="removeClass"
            @change="handleEdit(item.prop, scope.$index, scope.row)"
          ></el-input>
          <span>{{ scope.row[item.prop] }}</span>
        </template>
        <el-table-column
          v-for="(itemchild, indexchild) in item.children"
          :key="indexchild"
          :prop="itemchild.prop"
          :label="itemchild.label"
          :width="itemchild.width"
        >
          <template slot-scope="scope">
            <el-input
              v-if="itemchild.edit"
              size="small"
              ref="tableInput"
              v-model="scope.row[itemchild.prop]"
              @blur="removeClass"
              @change="handleEdit(itemchild.prop, scope.$index, scope.row)"
            ></el-input>
            <span>{{ scope.row[itemchild.prop] }}</span>
          </template>
        </el-table-column>
      </el-table-column>
    </el-table>
  </div>
</template>

<script>
import { Column, tableData } from "./tableColumn";
export default {
  data() {
    return {
      tableData: tableData,
      tableColumn: Column
    };
  },
  methods: {
    handleEdit() {},
    cellClick(row, column, cell, event) {
      for(let i=0;i<document.getElementsByClassName('current-cell').length;i++){
        document.getElementsByClassName('current-cell')[i].classList.remove('current-cell');
      }
      cell.classList.add("current-cell");
    },
    removeClass(){
      document.getElementsByClassName('current-cell')[0].classList.remove('current-cell');
    }
  }
};
</script>
<style scoped>
.tableDiv .el-input {
  display: none;
}
.current-cell .el-input {
  display: block;
}
.current-cell .el-input + span {
  display: none;
}
</style>

tableColumn.js文件

const Column = [
    { label: '项目名称', prop: 'itemName', width: '300', key: '100' },
    { label: '项目编码', prop: 'itemCode', width: '150', key: '200' },
    { label: '单位', prop: 'compName', width: '150', key: '300', edit: true },
    {
        label: '费用', prop: '', width: '450', align: 'center', key: '400', children: [
            { label: '人工费', prop: 'staff', width: '150', key: '401', edit: true },
            { label: '资料费', prop: 'material', width: '150', key: '402', edit: true },
            { label: '场地费', prop: 'site', width: '150', key: '403' }
        ]
    }
];
const tableData = [
    { itemName: "北京水立方", itemCode: "1351157698", compName: "北京", staff: "100", material: "84547", site: "6544", sort: 1 },
    { itemName: "北京水立方", itemCode: "1351157698", compName: "北京", staff: "100", material: "84547", site: "6544", sort: 2 },
    { itemName: "北京水立方", itemCode: "1351157698", compName: "北京", staff: "100", material: "84547", site: "6544", sort: 3 },
    { itemName: "北京水立方", itemCode: "1351157698", compName: "北京", staff: "100", material: "84547", site: "6544", sort: 4 },
    { itemName: "北京水立方", itemCode: "1351157698", compName: "北京", staff: "100", material: "84547", site: "6544", sort: 5 },
    { itemName: "北京水立方", itemCode: "1351157698", compName: "北京", staff: "100", material: "84547", site: "6544", sort: 6 },
    { itemName: "北京水立方", itemCode: "1351157698", compName: "北京", staff: "100", material: "84547", site: "6544", sort: 7 },
    { itemName: "北京水立方", itemCode: "1351157698", compName: "北京", staff: "100", material: "84547", site: "6544", sort: 8 },
    { itemName: "北京水立方", itemCode: "1351157698", compName: "北京", staff: "100", material: "84547", site: "6544", sort: 9 },
    { itemName: "北京水立方", itemCode: "1351157698", compName: "北京", staff: "100", material: "84547", site: "6544", sort: 10 }
]
export {
    Column, tableData
}

注意:注意相应的样式不能少,非常重要!!!

页面效果:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: Vue+Element实现表格单元格编辑

本文链接: https://www.lsjlt.com/news/145700.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Vue+Element实现表格单元格编辑
    前言 Element的表格组件并没有给出明确的点击单个单元格进行的编辑的方案,我仔细阅读了官方的文档后,发现这个操作还是可以实现的。 实现原理 1、利用Table组件的cell-cl...
    99+
    2022-11-13
  • element-ui表格如何实现单元格可编辑
    这篇文章主要介绍element-ui表格如何实现单元格可编辑,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!如下所示:<template>  <el-tab...
    99+
    2022-10-19
  • element-ui直接在表格中点击单元格编辑
    目录实现效果实现代码最近由于公司开始使用elementUI,开发的过程中需要用到对表格的单元格进行编辑,下面是我自己实现表格可编辑的方式,感兴趣的可以了解一下 实现效果 编辑之后对...
    99+
    2022-11-12
  • element-ui如何直接在表格中点击单元格编辑
    这篇文章主要为大家展示了“element-ui如何直接在表格中点击单元格编辑”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“element-ui如何直接在表格中点击单元格编辑”这篇文章吧。实现效果...
    99+
    2023-06-21
  • antdvue表格可编辑单元格以及求和实现方式
    目录antd vue表格可编辑单元格以及求和实现antd vue 表格可编辑问题总结antd vue表格可编辑单元格以及求和实现 1、参照官网根据自己需要添加可编辑单元格组件 新建E...
    99+
    2023-05-17
    antd vue表格可编辑单元格 antd vue表格求和 antd vue表格可编辑
  • 关于Element-UI可编辑表格的实现过程
    目录一、 可编辑单元格的实现二、 Input框编辑时动态查询(下拉列表)三、 点击图标显示下拉、点击图标显示Dialog的实现一、 可编辑单元格的实现 实现效果:点击可编辑 实现原...
    99+
    2022-11-13
  • elementUI如何实现table单元格可编辑
    这篇文章主要介绍了elementUI如何实现table单元格可编辑,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。先上效果:APP.vue:&...
    99+
    2022-10-19
  • element-ui中Table表格省市区合并单元格怎么实现
    这篇文章主要为大家展示了“element-ui中Table表格省市区合并单元格怎么实现”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“element-ui中Tab...
    99+
    2022-10-19
  • element可编辑表格验证问题解决
    前提:表格里设置可编辑表单。 注意事项: 1.校验需要触发表单,而表格需要时数组。因此表单绑定的是一个对象,表格中绑定的是该对象中的数组。2.prop动态绑定。3.必要的情况下可以添...
    99+
    2023-05-18
    element可编辑表格验证 element 表格验证
  • Element Plus修改表格行和单元格样式详解
    目录前言设置某一行的样式设置某一个单元格的样式表头样式修改(赠品)总结前言 实习工作需要根据表格的状态字段来设置行的样式,记录一波。 先来一下基础配置。(Vue3) <temp...
    99+
    2022-11-13
  • Layui数据表格之单元格编辑方式的示例分析
    这篇文章将为大家详细讲解有关Layui数据表格之单元格编辑方式的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。开发工具与关键技术:VS、layui数据表格之单元格...
    99+
    2022-10-19
  • vue中Element-ui表格怎么实现树形结构表格
    这篇文章主要为大家展示了“vue中Element-ui表格怎么实现树形结构表格”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“vue中Element-ui表格怎么实现树形结构表格”这篇文章吧。本文...
    99+
    2023-06-15
  • Swift实现表格视图单元格单选(1)
    本文实例为大家分享了Swift实现表格视图单元格单选的具体代码,供大家参考,具体内容如下 效果展示 前言 最近一个朋友问我,如何实现表格视图的单选?因为我之前用Objective-...
    99+
    2022-11-13
  • Swift实现表格视图单元格单选(2)
    本文实例为大家分享了Swift实现表格视图单元格单选的具体代码,供大家参考,具体内容如下 效果 前言 前段时间写了一篇博客: 表格视图单元格单选(一),实现起来并不复杂,简单易懂。...
    99+
    2022-11-13
  • Vue中Element的table多选表格如何实现单选
    目录Element的table多选表格实现单选vue table单选逻辑Element的table多选表格实现单选 效果图 1.在多选表格的基础上进行处理, 呈现单选表格的作用 2...
    99+
    2022-11-13
  • css如何实现等宽表格单元格
    这篇文章给大家分享的是有关css如何实现等宽表格单元格的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。等宽表格单元格表格可能很难处理,所以尝试使用table-layout:fixed来保持单元格相等宽度:.cale...
    99+
    2023-06-27
  • css如何实现表格单元格等宽
    这篇文章将为大家详细讲解有关css如何实现表格单元格等宽,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。表格单元格等宽表格工作起来很麻烦,所以务必尽量使用 table-layout: fixed 来保持单元...
    99+
    2023-06-05
  • Swift实现表格视图单元格多选
    本文实例为大家分享了Swift实现表格视图单元格多选的具体代码,供大家参考,具体内容如下 效果 前言 这段时间比较忙,没太多的时间写博客,前段时间写了一些关于表格视图单选的文章,想...
    99+
    2022-11-13
  • element table 表格控件实现单选功能
    项目中实现 table 表格控件单选功能,如图: 基本代码如下: 1、template 代码中: <el-table :data="tableData" bo...
    99+
    2022-11-13
  • vue+element-ui+sortable.js实现表格拖拽功能
    本文实例为大家分享了vue+element-ui+sortable.js实现表格拖拽的具体代码,供大家参考,具体内容如下 效果如下: 1.vue使用cli创建项目就不说了,本人使用...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作