返回顶部
首页 > 资讯 > 前端开发 > JavaScript >vueel-table动态添加行与删除行的实现
  • 497
分享到

vueel-table动态添加行与删除行的实现

2024-04-02 19:04:59 497人浏览 八月长安
摘要

目录el-table 动态添加行与删除行el-table 合计行放在首行首先在el-table ,添加属性2.定义合计行的位置和样式3. 合计行的数据el-table 动态添加行与删

el-table 动态添加行与删除行

项目中有需要动态添加和删除 el-table 行的需要,就学习了下,发现很简单:

<template>
  <el-dialog
    width="50%"
    :visible.sync="isshow"
    :before-close="beforeClose"
    title="自定义设备类型属性">
    <div class="dialogDiv">
      <el-table 
        :data="tableData.filter(data => handleAdd || data.name.toLowerCase().includes(handleAdd.toLowerCase()))" 
        style="width: 100%" border>
        <el-table-column prop="code" 
          :label="$t('basicData.device.propDlg.code')">
        </el-table-column>
        <el-table-column prop="maxValue" 
          :label="$t('basicData.device.propDlg.maxValue')">
        </el-table-column>
        <el-table-column prop="minValue" 
          :label="$t('basicData.device.propDlg.minValue')">
        </el-table-column>
        <el-table-column prop="name" 
          :label="$t('basicData.device.propDlg.name')">
        </el-table-column>
        <el-table-column prop="valueType" 
          :label="$t('basicData.device.propDlg.valueType')">
        </el-table-column>
        <el-table-column prop="warning" 
          :label="$t('basicData.device.propDlg.warning')">
        </el-table-column>
        <el-table-column align="center" width="160px">
          <template slot="header" slot-scope="scope">
            <el-button v-model="handleAdd" 
              size="mini"
              type="success"
              circle plain
              icon="el-icon-plus"
              @click="handleAdd(scope.$index, scope.row)">      
              {{ $t('common.add') }}      
            </el-button>
          </template>
          <template slot-scope="scope">
            <el-button
              size="mini"
              type="primary"
              circle plain
              icon="el-icon-edit"
              @click="handleEdit(scope.$index, scope.row)">
              {{ $t('common.edit') }}
            </el-button>
            <el-button
              size="mini"
              type="danger"
              circle plain
              icon="el-icon-delete"
              @click="handleDelete(scope.$index, scope.row)">
              {{ $t('common.delete') }}
            </el-button>
          </template>
        </el-table-column>
      </el-table>
    </div>
    <span slot="footer">
      <el-button @click="cancel">{{ $t('common.cancel') }}</el-button>
      <el-button @click="confirm" type="primary">{{ $t('common.confirm') }}</el-button>
    </span>
  </el-dialog>
</template>
<script>
export default {
  data() {
    return {
      tableData: []
    }
  },
  methods: {
    // 添加行
    handleAdd() {
      let row = {
        code: "",
        maxValue: "",
        minValue: "",
        name: "",
        valueType: "",
        warning: ""
      }
      this.tableData.push(row) 
    },
    // 编辑
    handleEdit(index, row) {   
    },
    // 删除行
    handleDelete(index, row) {
      this.tableData.splice(index, 1)
    },
    cancel() {
      this.$emit("cancel")
    },
    confirm() {
      this.$emit("confirm", this.tableData)
    }
  }
};
</script>
<style lang="sCSS" scoped>
.dialogDiv {
  height: 300px;
  overflow: auto;
}
</style>

以上 handleAdd 和 handleDelete 方法便可实现动态添加行和删除行。

原理:Vue是数据驱动 dom 进行渲染,所以改变 el-table 绑定的数组,就可以改变 el-table。

点击“添加”按钮就给数组添加一行数据,从而表格也会新增一行,点击“删除”按钮就删除数组当前的这一行数据,从而表格删除当前行。

el-table 合计行放在首行

效果如图所示

效果图

首先在el-table ,添加属性

summary-method=“getSummaries” show-summary
<div class="contentInfoWrap">
            <el-table :data="tableData" class="customTable" :summary-method="getSummaries" show-summary border :header-cell-style="HeadTable" :cell-style="columnStyle"
              :row-class-name="tableRowClassName" style="width: 100%">
              <el-table-column width="150" fixed>
                <template slot="header">
                  <div></div>
                </template>
                <template slot-scope="scope">
                  <div class="filstColumn">
                    <span>{{ scope.row.name }}</span>
                  </div>
                </template>
              </el-table-column>
              <el-table-column align="center" width="120" prop="name" label="活动月"></el-table-column>
              <el-table-column align="center" width="120" prop="channel" label="渠道"></el-table-column>
              <el-table-column align="center" width="120" prop="number" label="CPT VOL(箱)"></el-table-column>
            </el-table>
          </div>

2.定义合计行的位置和样式

方法一:通过css 控制

// 合计行样式
.el-table__footer-wrapper tbody td,
.el-table__header-wrapper tbody td {
  background-color: #e3f3ff !important;
  color: #666;
}
.el-table__footer-wrapper .is-leaf {
  color: #666 !important;
}
.el-table__fixed-footer-wrapper tbody td {
  border-top: 1px solid #ebeef5;
  background-color: #e3f3ff;
  color: #666;
  text-align: center !important;
}
.has-gutter tr td .cell {
  text-align: center;
  color: #001111;
}
//合并行放在第一行
.contentInfoWrap .el-table {
  display: flex;
  flex-direction: column;
}
.contentInfoWrap .el-table__body-wrapper {
  order: 1;
}
.contentInfoWrap .el-table__fixed-body-wrapper {
  top: 97px !important;
}
.contentInfoWrap .el-table__fixed-footer-wrapper {
  z-index: 0;
  top: 50px;
}

方法二:通过DOM操作将合计行放置到首行

在mounted中调用该方法即可

showSummariesPosition() {
      const table = document.querySelector('.customTable') // customTable这个是在el-table定义的类名
      const footer = document.querySelector(
        '.customTable .el-table__footer-wrapper'
      )
      const body = document.querySelector(
        '.customTable .el-table__body-wrapper'
      )
      table.removeChild(footer) // 移除表格最下方的合计行
      table.insertBefore(footer, body) // 把合计行插入到表格body的上面
    },

3. 合计行的数据

getSummaries(param) {
      const { columns, data } = param
      const sums = []
      columns.forEach((column, index) => {
        if (index === 0) {
          sums[index] = 'Total(销量)'
          return
        }
        const values = data.map((item) => Number(item[column.property]))
        if (!values.every((value) => isNaN(value))) {
          sums[index] = values.reduce((prev, curr) => {
            const value = Number(curr)
            if (!isNaN(value)) {
              return prev + curr
            } else {
              return prev
            }
          }, 0)
          sums[index] += ' '
        } else {
          sums[index] = ' '
        }
      })
      return sums
    },

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: vueel-table动态添加行与删除行的实现

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

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

猜你喜欢
  • vueel-table动态添加行与删除行的实现
    目录el-table 动态添加行与删除行el-table 合计行放在首行首先在el-table ,添加属性2.定义合计行的位置和样式3. 合计行的数据el-table 动态添加行与删...
    99+
    2024-04-02
  • vue+elementui实现动态添加行/可编辑的table
    本文实例为大家分享了vue+elementui实现动态添加行、可编辑的table的具体代码,供大家参考,具体内容如下 HTMl代码块: <el-col :span="24"&g...
    99+
    2024-04-02
  • vue-table实现添加和删除
    本文实例为大家分享了vue-table实现添加和删除的具体代码,供大家参考,具体内容如下 一.代码 <!DOCTYPE html> <html> <...
    99+
    2024-04-02
  • vue-table如何实现添加和删除
    这篇文章主要介绍了vue-table如何实现添加和删除,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体内容如下一.代码<!DOCTYPE html>&...
    99+
    2023-06-15
  • js动态实现表格添加和删除操作
    本文实例为大家分享了js动态实现表格添加和删除的具体代码,供大家参考,具体内容如下 运行效果如图(两种实现方案,被注释的是第一种实现方案) 代码: <!DOCTYPE h...
    99+
    2024-04-02
  • android ListView内数据的动态添加与删除实例代码
    main.xml 文件:  代码如下: <xml version="1.0" encoding="utf-8">  <LinearLa...
    99+
    2022-06-06
    数据 listview 动态 Android
  • Android实现SQLite添加、更新及删除行的方法
    本文实例讲述了Android实现SQLite添加、更新及删除行的方法。分享给大家供大家参考,具体如下: SQLiteDatabase类暴露了特定的方法,如insert、dele...
    99+
    2022-06-06
    更新 方法 SQLite Android
  • 如何用Vue.js实现动态添加、删除选题功能
    这篇“如何用Vue.js实现动态添加、删除选题功能”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“如何用Vue.js实现动态添...
    99+
    2023-07-04
  • Vue实现单行删除与批量删除
    目录单行删除与批量删除一、单行删除二、批量删除简单的批量删除,全选删除单行删除与批量删除 一、单行删除 <el-table-column align="center" fix...
    99+
    2024-04-02
  • Android中实现记事本动态添加行效果
    本文主要给大家介绍了关于Android实现记事本动态添加行的相关内容,分享出来供大家参考学习,下面来一起看看详细的介绍:先看效果图: 这是昨天在群里面有人在问这个问题,在这里顺便记录一下,这个效果我们可以自定义EditText,实现起来也不...
    99+
    2023-05-31
    android 记事本 动态添加行
  • jQuery如何实现的简单动态添加、删除表格功能
    这篇文章将为大家详细讲解有关jQuery如何实现的简单动态添加、删除表格功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。先来看看运行效果:具体代码如下:<!DOC...
    99+
    2024-04-02
  • JavaScript实现动态加载删除表格
    本文实例为大家分享了JavaScript实现动态加载删除表格的具体代码,供大家参考,具体内容如下 代码: <!DOCTYPE html> <html lang...
    99+
    2024-04-02
  • vue实现动态列表尾部添加数据执行动画
    目录动态列表尾部添加数据执行动画先上动画动态数据使用wowjs显示动画1.通过npm安装2.在main.js中引入animate.css动态列表尾部添加数据执行动画 先上动画 动态...
    99+
    2024-04-02
  • jQuery如何实现动态添加、删除按钮及input输入框
    这篇文章给大家分享的是有关jQuery如何实现动态添加、删除按钮及input输入框的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。具体如下:<html> <hea...
    99+
    2024-04-02
  • datagridview实现手动添加行数据
    目录datagridview手动添加行数据datagridview添加行的几种方式datagridview手动添加行数据 我在做软件模型界面时,通过功能按钮触发显示的datagrid...
    99+
    2024-04-02
  • Java实现Excel表单控件的添加与删除
    目录介绍Java示例1添加表单控件Java示例2删除表单控件介绍 通过表单控件,用户可以快速地将数据填写到模板文档中,轻松引用单元格数据并与其进行交互。本文通过Java代码示例介绍如...
    99+
    2024-04-02
  • js实现模态窗口增加与删除
    本文实例为大家分享了js实现模态窗口增加与删除的具体代码,供大家参考,具体内容如下 <!doctype html> <html lang="en"> <...
    99+
    2024-04-02
  • Android实现彩信附件的添加与删除功能
    本文实例讲述了Android实现彩信附件的添加与删除功能。分享给大家供大家参考,具体如下: 添加附件 在ComposeMessageActivity里 addAttachmen...
    99+
    2022-06-06
    彩信 Android
  • JavaScript如何实现动态加载删除表格
    这篇文章将为大家详细讲解有关JavaScript如何实现动态加载删除表格,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体内容如下代码:<!DOCTYPE html><html...
    99+
    2023-06-14
  • vue怎么实现动态列表尾部添加数据执行动画
    这篇文章主要介绍“vue怎么实现动态列表尾部添加数据执行动画”,在日常操作中,相信很多人在vue怎么实现动态列表尾部添加数据执行动画问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”vue怎么实现动态列表尾部添加...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作