element-table的动态操作,自动以表格,动态新增行、列,删除行列

这篇具有很好参考价值的文章主要介绍了element-table的动态操作,自动以表格,动态新增行、列,删除行列。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

灵活的自定义表格行列以及增删改查的操作,右键选中列则是列的删除,效果如下

 element-table的动态操作,自动以表格,动态新增行、列,删除行列,vue.js,javascript,elementui

element-table的动态操作,自动以表格,动态新增行、列,删除行列,vue.js,javascript,elementui

<template>
  <div class="st-table">
    <div style="width: 100%">
      <el-button @click="addRow()" type="primary" icon="CirclePlus">新增行</el-button>
      <el-button @click="addCol()" type="primary" icon="CirclePlus">新增列</el-button>
      <el-input type="text" placeholder="请输入关键字查询" v-model="tableParam.keyword" style="width: 200px;"/>
      <el-button type="info" @click="queryList()">查询</el-button>
    </div>
    <el-table :data="tableData" border style="width: 100%" @header-contextmenu="cellClick">
      <el-table-column prop="type" label="类型" width="180">
        <template slot-scope="scope">
          <el-input type="text" v-model="scope.row.type" v-show="scope.row.iseditor" />
          <span v-show="!scope.row.iseditor">{{scope.row.type}}</span>
        </template>
      </el-table-column>
      <el-table-column prop="code" label="编码" width="180">
        <template slot-scope="scope">
          <el-input type="text" v-model="scope.row.code" v-show="scope.row.iseditor" />
          <span v-show="!scope.row.iseditor">{{scope.row.code}}</span>
        </template>
      </el-table-column>
      <el-table-column prop="value" label="值" width="180">
        <template slot-scope="scope">
          <el-input type="text" v-model="scope.row.value" v-show="scope.row.iseditor" />
          <span v-show="!scope.row.iseditor">{{scope.row.value}}</span>
        </template>
      </el-table-column>
      <el-table-column prop="name" label="名称">
        <template slot-scope="scope">
          <el-input type="text" v-model="scope.row.name" v-show="scope.row.iseditor" />
          <span v-show="!scope.row.iseditor">{{scope.row.name}}</span>
        </template>
      </el-table-column>
      <!-- 添加列 -->
      <el-table-column v-for="(item,index) in tableHeader" :prop="item" :key="index" :label="item">
        <template slot-scope="scope">
          <el-input type="text" v-model="scope.row.item" v-show="scope.row.iseditor" style="position: relative;"/>
          <span v-show="true"></span>
        </template>
      </el-table-column>
      <!-- 添加列 -->
      <el-table-column label="操作" width="240" align="center">
        <template slot-scope="scope">
          <el-button type="primary" @click="edit(scope.row)">编辑</el-button>
          <el-button type="primary" @click="saves(scope.row)">保存</el-button>
          <el-button type="danger" @click="delRow(scope.row)">删除</el-button>
        </template>
      </el-table-column>
    </el-table>
    <el-dialog title="添加表格列" :visible.sync="dialogFormVisible" :modal='false' :close-on-click-modal="false" width="30%">
      <el-input v-model="colName" placeholder="请输入要增加的列名" style="width: 100%;"></el-input>
      <div slot="footer" class="dialog-footer">
        <el-button @click="dialogFormVisible = false">取 消</el-button>
        <el-button type="primary" @click="getcol()">确 定</el-button>
      </div>
    </el-dialog>
    <div class="toolbar" style="padding: 25px;">
      <pagination v-show="tableParam.total>0" :total="tableParam.total" :page.sync="tableParam.pageNumber" :limit.sync="tableParam.pageSize" @pagination="queryList"/>
    </div>
  </div>
</template>
<script>
import { openMessageSuccess, openMessageWarning, openMessageError } from '@/api/assembly/openMessage'
import Pagination from '@/components/Pagination'
import {query, save,del} from '@/api/zczy/dict'
export default {
  components: {
      Pagination
    },
  created() {
    this.initData()
    document.oncontextmenu = function(){return false}
  },
  data() {
    return {
      colName: '',
      tableParam: {
          pageNumber: 0,
          pageSize: 10,
          total: 0,
          keyword: "",
        },
      tableData: [
        {
          code: "cs1",
          value: "1",
          name: "测试1",
          iseditor: false
        },
        {
          code: "cs2",
          value: "2",
          name: "测试2",
          iseditor: false
        }
      ],
      tableHeader: [],
      dialogFormVisible: false,
      delVisible: false
    };
  },
  methods: {
    queryList(){
      query(this.tableParam).then(res => {
          this.tableData = res.list
          this.tableParam.total = res.total
          this.tableParam.pageNumber = res.pageNumber
          this.tableParam.pageSize = res.pageSize
          this.tableData.forEach(element => {
            this.$set(element,'iseditor',false)
          });
        })
    },
    // 新增行
    addRow(){
      const row = {
          code: "",
          value: "",
          name: "",
          iseditor: true
      };
      this.tableData.push(row)
    },
    //新增列
    addCol(){
      this.dialogFormVisible = true
      if(this.colName !==''){
        this.tableHeader.push(this.colName)
      }
    },
    getcol(){
      this.addCol()
      this.dialogFormVisible = false
      this.colName = ''
    },
    //删除列
    cellClick(column, event) {
      this.$confirm('是否删除列:'+column.label+' ?', "提示", {confirmButtonText: '确定', type: 'info'}).then(() => {
        openMessageSuccess('测试')
            //   saveProject(this.rowData).then(res => {
            //   openMessageSuccess(res.msg)
            //   this.dealClose()
            // })
          })
    },
    delRow(row) {
      const index = this.tableData.indexOf(row)
      this.tableData.splice(index, 1);
      let params = {id:row.id}
      del(params).then(res=>{
        openMessageSuccess(res.msg)
        this.queryList()
      })
    },
    edit(row) {
      row.iseditor = true;
    },
    saves(row) {
      save(row).then(res=>{
        openMessageSuccess(res.msg)
        this.queryList()
      })
    },
    //初始化数据
    initData() {
      // this.queryList()
    }
    },
  }
</script>
<style>
  .mybtn{
    color: #fff;
    background-color: #67c23a;
    border-color: #67c23a;
  }
</style>

为了方便可以直接复制代码查看效果已把动态数据换成自定义数据文章来源地址https://www.toymoban.com/news/detail-671338.html

到了这里,关于element-table的动态操作,自动以表格,动态新增行、列,删除行列的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • form-generator扩展原生表格,element-table,子表单等组件

    form-generator的作者是这样介绍的:Element UI表单设计及代码生成器,可将生成的代码直接运行在基于Element的vue项目中;也可导出JSON表单,使用配套的解析器将JSON解析成真实的表单。 但form-generator提供组件并不能满足我们在项目中的使用,比如表格组件,el-table,子表单等等,

    2024年02月15日
    浏览(46)
  • vue+Element UI Table表格动态渲染表头内容及操作按钮

    循环表格头信息数组 封装操作组件并引入表格文件内 配置表头信息数组及添加操作事件

    2024年02月13日
    浏览(66)
  • Vue 3,element table表格动态添加

            el-table实现表格动态新增/插入/删除表格行,可编辑单元格 效果图 代码实现 

    2024年01月19日
    浏览(44)
  • Element-ui 动态Table表格

    最近在做相关需求,感觉太多的重复代码,网上也很多这种动态的,写的很好,所以我借鉴了很多大佬的动态table表格,结合需求,完成了我自己需要的table。 1.config文件夹相关配置文件 2.一个用来配置的’pageTable.vue’文件 其实table 表格里面的align也可以动态,我这里偷懒了

    2024年02月11日
    浏览(38)
  • 实现简单的element-table的拖拽效果

    第一步,先随便创建element表格 第二步,里面的数据源tableData直接复制饿了么上的 第三步,需要安装sortablejs库并且在头部引入 第四步,通过ref获取table,这里给table的ref设置为dragTable 第五步,就是获取table然后设置它的一些属性,比如拖拽时的CSS,拖拽时的一些事件等,然后

    2024年02月11日
    浏览(37)
  • vue element-table(树形结构),实现同级拖动排序

    ####需求:树形结构的table需要实现同级拖拽排序 1.vue引用sortablejs 参考相关配置http://www.sortablejs.com/options.html 2.定义变量 3.初始化created中调用方法,方法如下 4.扁平化数据方法 5.犹豫这个过程中需要子级存在父级的parentId,自己把扁平化的方法改造了一下,在查询完列表数据时

    2024年02月14日
    浏览(41)
  • vue+element ui----table编辑当前行、删除当前行、新增、合计操作

    vue+element ui----table编辑当前行、删除当前行、新增、合计操作

    2024年02月11日
    浏览(61)
  • element ui设置table自适应表格宽,不自动换行

    在我们平常开发使用element ui中的table时,会出现数据过长自动换行的结果, 如果把宽给死的情况下也不太适合,接下来提供二种方式去动态计算每个盒子的宽度。 第一种方式 表格加** table-layout=\\\'auto’ **属性 表格加tableAuto类名 el-table-column标签不设置宽度 但这种方式纯在二个

    2024年02月11日
    浏览(34)
  • Element table根据字段合并表格(可多字段合并),附带拖拽列动态合并

    效果如图,姓名 数值1 字段进行自动合并 封装合并列js - tableMerge.js 拖拽使用sortablejs 如果拖拽列 要动态生成列 注意不支持行拖拽

    2024年02月11日
    浏览(43)
  • 别样的表格操作:vue + element 实现动态表格

    在 web 开发中,动态表格已经成为了一个非常常见的需求。而 vue 和 element 这两个框架的强大之处,就在于如何优雅地实现这样的需求。在本篇文章中,我们将探讨 vue 和 element 之间的结合,以及如何在其中实现动态表格的功能。 静态表格 大家都知道 element 表格组件的表头默

    2024年02月06日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包