返回顶部
首页 > 资讯 > 前端开发 > JavaScript >antdvue表格可编辑单元格以及求和实现方式
  • 189
分享到

antdvue表格可编辑单元格以及求和实现方式

antdvue表格可编辑单元格antdvue表格求和antdvue表格可编辑 2023-05-17 05:05:41 189人浏览 薄情痞子
摘要

目录antd Vue表格可编辑单元格以及求和实现antd vue 表格可编辑问题总结antd vue表格可编辑单元格以及求和实现 1、参照官网根据自己需要添加可编辑单元格组件 新建E

antd vue表格可编辑单元格以及求和实现

1、参照官网根据自己需要添加可编辑单元格组件

新建EditableCell.vue

<template>
    <div class="editable-cell">
        <div v-if="editable && isEditable" class="editable-cell-input-wrapper">  
            <a-input ref='inputs' style="height: 30px" :type='type ? "number" : "text"' :value="value" @change="handleChange" @blur="check" />
        </div>
        <div v-else class="editable-cell-text-wrapper" @dblclick="edit">
            <span>{{ value }}</span>
        </div>
    </div>
</template>
<script>
export default {
    props: {
        text: [String, Number],
        type: Boolean,
        isEditable: {
            default: true,
            type: Boolean,
        },
    },
    data() {
        return {
            value: this.text,
            editable: false,
        };
    },
    methods: {
        handleChange(e) {
	        const value = e.target.value;
	        this.value = value;
        },
        check() {
            this.editable = false;
            this.$emit('change', this.value);
        },
        edit() {
            this.editable = true;
            this.$nextTick((x) => { 
                if (this.$refs.inputs) {
                    this.$refs.inputs.focus();
                }
            })
        },
    },
};
</script>
<style scoped>
.editable-cell {
    position: relative;
}
.editable-cell-text-wrapper {
    padding: 4px 5px 5px 5px;
    cursor: pointer;
}
</style>

2、需要的页面引入

<template>
  <div style="margin: 24px">
    <a-table
      :bordered="true"
      :columns="tableColumn"
      :dataSource="tableData"
      :rowKey="record => record.index"
      size="small"
      :pagination="false"
    >
      <template v-for="item in 5" :slot="'month' + item" slot-scope="text, record">
        <div :key="item">
          <editable-cell
            v-if="record.title != '合计'"
            :text="text"
            :isEditable="true"
            @change="onCellChange(record, 'month' + item, $event, 'tableData')"
          />
          <!--合计行不可编辑,需要单独写,不然无法视图上无法显示-->
          <span v-else>{{text}}</span>
        </div>
      </template>
    </a-table>
  </div>
</template>

<script>
import EditableCell from "@/components/EditableCell";
export default {
  name: "App",
  components: {
    EditableCell
  },
  data() {
    return {
      tableData: [
        { index: 0, title: "合计" },
        { index: 1, title: "费用1" },
        { index: 2, title: "费用2" },
        { index: 3, title: "费用3" },
        { index: 4, title: "费用4" },
        { index: 5, title: "费用5" }
      ],
      tableColumn: []
    };
  },
  mounted() {
    this.initTable();
  },
  methods: {
    initTable() {
      let array = [3]; //设置可编辑列
      this.tableColumn = [
        { title: "类别", align: "center", dataindex: "title" },
        {
          title: "01",
          align: "center",
          dataIndex: "month1",
          width: 80,
          //判断该列是否可编辑
          scopedSlots: array.includes(1) ? { customRender: "month1" } : ""
        },
        {
          title: "02",
          align: "center",
          dataIndex: "month2",
          width: 80,
          scopedSlots: array.includes(2) ? { customRender: "month2" } : ""
        },
        {
          title: "03",
          align: "center",
          dataIndex: "month3",
          width: 80,
          scopedSlots: array.includes(3) ? { customRender: "month3" } : ""
        },
        {
          title: "04",
          align: "center",
          dataIndex: "month4",
          width: 80,
          scopedSlots: array.includes(4) ? { customRender: "month4" } : ""
        },
        {
          title: "05",
          align: "center",
          dataIndex: "month5",
          width: 80,
          scopedSlots: array.includes(5) ? { customRender: "month5" } : ""
        }
      ];
    },
    onCellChange(key, dataIndex, value, tableName) {
      var obj = {
        index: key.index,
        title: key.title
      };
      obj[dataIndex] = value;
      const dataSource = [...this[tableName]];
      const target = dataSource.find(item => item.index === key.index);
      if (target) {
        if (target[dataIndex] !== value) {
          target[dataIndex] = value;
          if (!dataSource[0][dataIndex]) {
            dataSource[0][dataIndex] = 0;
          }
          dataSource[0][dataIndex] += value * 1;
          this[tableName] = dataSource;
        }
      }
    }
  }
};
</script>

注意点:合计行是直接由下面几行汇总求和的,不需要设置为可编辑的,如果设置为可编辑,可编辑单元格无法动态获取数据变化,所以无法实时更新到页面上

antd vue 表格可编辑问题

template:

<a-table :columns="tableColumns" :data-source="tableData">
          <span v-for="i in tableColumns" :key="i.dataIndex" :slot="i.dataIndex" slot-scope="text" contentEditable=true>            
                  {{text}}
          </span>
</a-table>    

在tableColumns中:

const tableColumns = [
    { title: "编号", dataIndex:"stdId",
      scopedSlots: { customRender: "stdId" }}
];

还有一个问题就是点击单元格会出现一个border,取消掉的CSS样式:

[contenteditable]:focus{outline: none;}

总结

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

--结束END--

本文标题: antdvue表格可编辑单元格以及求和实现方式

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

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

猜你喜欢
  • antdvue表格可编辑单元格以及求和实现方式
    目录antd vue表格可编辑单元格以及求和实现antd vue 表格可编辑问题总结antd vue表格可编辑单元格以及求和实现 1、参照官网根据自己需要添加可编辑单元格组件 新建E...
    99+
    2023-05-17
    antd vue表格可编辑单元格 antd vue表格求和 antd vue表格可编辑
  • element-ui表格如何实现单元格可编辑
    这篇文章主要介绍element-ui表格如何实现单元格可编辑,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!如下所示:<template>  <el-tab...
    99+
    2024-04-02
  • Vue+Element实现表格单元格编辑
    前言 Element的表格组件并没有给出明确的点击单个单元格进行的编辑的方案,我仔细阅读了官方的文档后,发现这个操作还是可以实现的。 实现原理 1、利用Table组件的cell-cl...
    99+
    2024-04-02
  • elementUI如何实现table单元格可编辑
    这篇文章主要介绍了elementUI如何实现table单元格可编辑,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。先上效果:APP.vue:&...
    99+
    2024-04-02
  • Layui数据表格之单元格编辑方式的示例分析
    这篇文章将为大家详细讲解有关Layui数据表格之单元格编辑方式的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。开发工具与关键技术:VS、layui数据表格之单元格...
    99+
    2024-04-02
  • js+Html实现表格可编辑操作
    本文实例为大家分享了js+Html实现表格可编辑操作的具体代码,供大家参考,具体内容如下 功能描述:单击页面使单元格td变成可编辑状态,输入内容后,当单元格失去焦点时,保存输入的内容...
    99+
    2024-04-02
  • js+Html如何实现表格可编辑操作
    这篇文章主要介绍了js+Html如何实现表格可编辑操作,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。功能描述:单击页面使单元格td变成可编辑状态,输入内容后,当单元格失去焦点...
    99+
    2023-06-14
  • 关于Element-UI可编辑表格的实现过程
    目录一、 可编辑单元格的实现二、 Input框编辑时动态查询(下拉列表)三、 点击图标显示下拉、点击图标显示Dialog的实现一、 可编辑单元格的实现 实现效果:点击可编辑 实现原...
    99+
    2024-04-02
  • Vue中table如何实现动态表格td可编辑
    这篇文章主要介绍Vue中table如何实现动态表格td可编辑,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!项目中需求用到可编辑表格下图这种 ↓element UI 组件table表格...
    99+
    2024-04-02
  • vue中用js如何实现循环可编辑表格
    目录vue用js实现循环可编辑表格表格的需求简单总结一下就是vue用js实现循环可编辑表格 最近项目中需要实现一个很复杂的表格,尝试用组件写,半天写不出来,循环真的好绕,最后直接求助...
    99+
    2024-04-02
  • bootstrap如何实现table单元格新增行并编辑功能
    这篇文章主要介绍bootstrap如何实现table单元格新增行并编辑功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!table单元格新增行并编辑,具体内容如下需要bootstra...
    99+
    2024-04-02
  • jQuery如何实现可编辑表格并生成json结果
    这篇文章给大家分享的是有关jQuery如何实现可编辑表格并生成json结果的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。实现效果如下,在编辑表格的同时可以实现字段json内容的自...
    99+
    2024-04-02
  • bootstrap table如何实现x-editable的行单元格编辑及解决数据Empty和支持多样式问题
    这篇文章给大家分享的是有关bootstrap table如何实现x-editable的行单元格编辑及解决数据Empty和支持多样式问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧...
    99+
    2024-04-02
  • vue 表格单选按钮的实现方式
    目录vue实现表格单选按钮表格中有两个单选按钮切换互不影响项目场景问题描述原因分析解决方案vue实现表格单选按钮 return{ orderNo:'', columns: [ ...
    99+
    2024-04-02
  • SpringBoot 表单提交全局日期格式转换器实现方式
    目录参考资料一. 实现Converter<S, T>接口的方式二. 全局@ControllerAdvice + @InitBinder注解的方式三. RequestMap...
    99+
    2023-05-16
    SpringBoot 全局日期格式转换器 SpringBoot 表单提交 SpringBoot 日期格式
  • CSS中下拉菜单和表单以及弹出层的实现方法
    本篇内容介绍了“CSS中下拉菜单和表单以及弹出层的实现方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!下...
    99+
    2024-04-02
  • 如何实现axios发送post请求以及提交图片类型表单数据方法
    这篇文章给大家分享的是有关如何实现axios发送post请求以及提交图片类型表单数据方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。DOME<input typ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作