首页 > 其他分享 >vue element-ui表格table 表格动态 添加行、删除行、添加列、删除列 自定义表头

vue element-ui表格table 表格动态 添加行、删除行、添加列、删除列 自定义表头

时间:2024-08-26 10:22:23浏览次数:9  
标签:index columnObj 表格 删除 item 添加 tableData 属性

     vue table表格动态 添加行、删除行、添加列、删除列 自定义表头; 

增加一行、删除一行、添加一列、删除一列;每行带输入框input

代码

1、HTML部分:

<template>
  <div class="app-container">
    <el-table :data="tableData" border style="width: 600px; margin-top: 20px">
      <el-table-column v-for="item in columnData" :label="item.label" :prop="item.prop" :width="item.width">
        <template slot-scope="scope">
          <span v-if="scope.row[item.prop] !== null">
            <el-input v-model="scope.row[item.prop]"></el-input>
          </span>
          <span style="color: red; cursor: pointer;" v-else @click="deleteColumns(item.prop)">删除列</span>
        </template>
      </el-table-column>
      <el-table-column fixed="right" label="操作" width="100">
        <template slot-scope="scope">
          <el-button @click="deleteRows(scope)" v-if="scope.$index < tableData.length - 1" type="text" size="small">删除行
          </el-button>
        </template>
      </el-table-column>
    </el-table>

    <el-button type="text" @click="addRows()">增加行</el-button>
    <el-input v-model='columnLabel' style="width: 200px" placeholder="请输入要增加的列名label"></el-input>
    <el-button type="text" @click="addColumn()">增加列</el-button>
  </div>
</template>

2、JS 部分:

<script>
export default {
  name: "Index",
  data() {
    return {
      columnLabel: '', //要增加的列名
      columnPropIndex: 0, //列属性自增
      columnData: [],//列标题数组
      tableData: [{}] //表格数据
    };
  },
  methods: {

    //添加行
    addRows() {
      const circle = this.tableData[0]; //取出数组中第一个对象
      if (circle) {
        const newObj = {};
        for (let key in circle) { //把第一个对象的属性都赋值给新对象newObj  然后每个属性的值都设置为空;
          newObj[key] = '';
        }
        this.tableData.splice(this.tableData.length - 1, 0, newObj);
      }
    },

    //删除行
    deleteRows(scope) {
      this.tableData.splice(scope.$index, 1);
    },

    //添加列
    addColumn() {

      if (this.columnLabel) {
        const _this = this;
        // 1、//列标题数组中 增加一个标题
        const columnObj = {};
        var propStr = 'items'; //自定义一个列属性;
      
        columnObj.prop = propStr + this.columnPropIndex; //拼接自增数
        columnObj.label = this.columnLabel;
        this.columnData.push(columnObj);
        _this.columnPropIndex++; //自增数每次加一

        //2、数据包中每个对象增加一个生成的新属性
        _this.tableData.forEach(function (item, index) { //遍历数据包
          //每个对象新加一个属性 每一行数据值默认给''
          if (index < (_this.tableData.length - 1)) {
            _this.$set(item, columnObj.prop, '');
          } else {
            //最后一个给null  才会是删除列的按钮 不然是输入框
            _this.$set(item, columnObj.prop, null);

          }
        });

      }
    },

    //删除列
    deleteColumns(property) {
      const _this = this;
      // 你想删除属性:property
      _this.tableData.forEach(function (item, index) { //遍历数组中的每个对象 删除指定的属性
        _this.$delete(item, property);

      });
      // 2、删除表头数组里的数据
      _this.columnData.forEach(function (item, index) {
        if (item.prop === property) {
          _this.columnData.splice(index, 1);
        }
      });

    },


  },
};
</script>

标签:index,columnObj,表格,删除,item,添加,tableData,属性
From: https://blog.csdn.net/qq_33791597/article/details/141557580

相关文章

  • ArrayList元素的删除(4种函数)
    1Clear()方法Clear()方法用来从ArrayList中移除所有元素,语法格式如下。string[]str1={"a","b","c"};ArrayListList=newArrayList(str1);List.Clear();2Remove()方法Remove()方法用来从ArrayList中移除特定对象的第一个......
  • 尚品汇-添加购物车实现(三十六)
    目录:(1)购物车业务简介(2)购物车模块搭建(3)搭建service-cart服务(4)功能—添加入购物车(5)添加购物车功能开发(1)购物车业务简介购物车模块要能够存储顾客所选的的商品,记录下所选商品,还要能随时更新,当用户决定购买时,用户可以选择决定购买的商品进入结算页面。 功能要求:利用缓......
  • Unet改进7:在不同位置添加SimAM注意力机制||无参数的卷积神经网络注意模块
    本文内容:在不同位置添加SimAM注意力机制目录论文简介1.步骤一2.步骤二3.步骤三4.步骤四论文简介在本文中,我们为卷积神经网络(ConvNets)提出了一个概念简单但非常有效的注意力模块。与现有的通道智能和空间智能注意力模块相比,我们的模块在不向原始网络添加参数的情况......
  • C# 将数据写入到Excel表格
    Excel是一款广泛应用于数据处理、分析和报告制作的电子表格软件。在商业、学术和日常生活中,Excel的使用极为普遍。本文将详细介绍如何使用免费.NET库将数据写入到Excel中,包括文本、数值、数组、和DataTable数据的输入。C#在Excel单元格中写入文本、或数值C#在Excel工作表......
  • C++ //练习 19.23 为你的Token类添加移动构造函数和移动赋值运算符。
    C++Primer(第5版)练习19.23练习19.23为你的Token类添加移动构造函数和移动赋值运算符。环境:LinuxUbuntu(云服务器)工具:vim 代码块classToken{ public: Token():tok(INT),ival(0){} Token(constToken&t):tok(t.tok){copyUnion(t);} Token&operator=(......
  • 原神4.8版本重点培养和抽到角色数据表:修改了添加倒计时.隐藏了抽到角色数据表删除按钮
    <!DOCTYPEhtml><htmllang="zh-cn"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>原神4.8版本抽到角色和重点培养数据表<......
  • 数据结构(Java):揭开二叉搜索树删除机制的奥秘
    目录1、二叉搜索树1.1概念2、代码模拟实现2.1插入操作2.2查找操作2.3......
  • YOLOv8改进系列,YOLOv8添加BiFormer注意力机制,助力小目标检测能力
    原论文摘要作为视觉Transformer的核心构建模块,注意力机制是捕捉长距离依赖关系的强大工具。然而,这种能力伴随着高昂的代价:由于需要计算所有空间位置之间的成对标记交互,导致巨大的计算负担和高内存占用。一系列工作试图通过引入手工设计的与内容无关的稀疏性来缓解这一问......
  • YOLOv8改进系列,YOLOv8添加MLCA注意力机制(混合局部信道注意)
    原论文摘要注意力机制是计算机视觉中最广泛使用的组件之一,能够帮助神经网络突出重要元素并抑制不相关的部分。然而,大多数通道注意力机制只包含通道特征信息,忽略了空间特征信息,导致模型的表示效果较差或目标检测性能不佳,并且空间注意力模块往往复杂且代价高昂。为了在性能......
  • 关于Arrays.asList返回的List无法新增和删除?
    这个是在写项目的时候发现的,然后就分析了一下源码,得其内部原理复现代码示例:publicclassArraysAsList{publicstaticvoidmain(String[]args){Integer[]array={1,2,3,4,5};List<Integer>list=Arrays.asList(array);list.forEach......