首页 > 其他分享 >ProTable双击可编辑

ProTable双击可编辑

时间:2024-02-19 14:26:29浏览次数:34  
标签:const item 编辑 dataIndex key ProTable 双击 record

要实现在Ant DesignTable组件中双击单元格修改内容,你可以通过以下步骤来实现:

  1. 创建一个 React 组件,并引入所需的依赖:
npm install antd
  1. 编写示例代码:
import React, { useState } from 'react';
import { Table, Input } from 'antd';

const EditableTable = () => {
  const [dataSource, setDataSource] = useState([
    { key: '1', name: 'John Doe', age: 30 },
    { key: '2', name: 'Jane Smith', age: 25 },
  ]);

  const handleCellDoubleClick = (record, dataIndex, event) => {
    const { key } = record;
    const value = record[dataIndex];
    const input = <Input defaultValue={value} onPressEnter={(e) => handleCellSave(key, dataIndex, e.target.value)} />;
    setDataSource(dataSource.map((item) => (item.key === key ? { ...item, [dataIndex]: input } : item)));
  };

  const handleCellSave = (key, dataIndex, value) => {
    setDataSource(dataSource.map((item) => (item.key === key ? { ...item, [dataIndex]: value } : item)));
  };

  const columns = [
    {
      title: 'Name',
      dataIndex: 'name',
      editable: true,
      onCell: (record) => ({
        onClick: () => {}, // 空函数,防止触发行点击事件
        onDoubleClick: () => handleCellDoubleClick(record, 'name'),
      }),
    },
    {
      title: 'Age',
      dataIndex: 'age',
      editable: true,
      onCell: (record) => ({
        onClick: () => {}, // 空函数,防止触发行点击事件
        onDoubleClick: () => handleCellDoubleClick(record, 'age'),
      }),
    },
  ];

  return <Table dataSource={dataSource} columns={columns} />;
};

export default EditableTable;

  在上面的代码中,我们创建了一个名为 EditableTable 的组件,使用 Table 组件展示表格数据。我们定义了 handleCellDoubleClick 函数,在双击单元格时将单元格的内容替换为

可编辑的输入框,并通过 handleCellSave 函数保存修改后的值。

columns 中,我们设置了 onCell 属性来处理单元格的双击事件,并调用 handleCellDoubleClick 函数来开启编辑模式。

  1. 渲染该组件:
import React from 'react';
import EditableTable from './EditableTable';

function App() {
  return (
    <div>
      <h1>Editable Table Example</h1>
      <EditableTable />
    </div>
  );
}

export default App;

  通过以上步骤,你就可以在 Table 组件中实现双击单元格修改内容的功能。希望这个示例对你有帮助!如果你有任何其他问题,请随时提问。

转自:charGpt

标签:const,item,编辑,dataIndex,key,ProTable,双击,record
From: https://www.cnblogs.com/wwssgg/p/18020990

相关文章

  • sublime 选择有规律的数据,同时快速编辑多行内容 去除重复行或者只保留唯一值
     同时快速编辑多行内容:五种方式:1,鼠标选中多行,按下CtrlShiftL(CommandShiftL)即可同时编辑这些行;2,鼠标选中文本,反复按CTRLD(CommandD)即可继续向下同时选中下一个相同的文本进行同时编辑;3,鼠标选中文本,按下AltF3(Win)或CtrlCommandG(Mac)即可一次性选择全......
  • 中端知识和工具+字符设备和块设备+LMA和VMA+gdb查看系统调用+vim查看指定文件链接的au
    中端知识和工具https://www.cnblogs.com/yjw951012/p/12865036.html抖动(Jitter)和偏移(skew)信号周期的长度总会有一定变化,从而导致下一个沿的到来时间不确定。这种不确定就是抖动(jitter)。因时钟线长度不同或负载不同,导致时钟到达相邻单元的时间不同,这个时间上的偏差就叫时钟偏......
  • 博客园跳转编辑页面没有重新加载页面 pushState
    博客园前端是用angular写的全局搜索pushState,打断点,可以看到 pushState main.6267e7d35558bee5.is:1gomain.6267e7d35558bee5.js:1setBrowserUrl main.6267e7d35558bee5.js:1 setBrowserUrl(p,I){constQ=this.urlSerializer.serialize(p)......
  • 从零开始配置 vim 编辑器
    从零开始配置vim编辑器笔者最近在windows环境下配置了WSL2和Debian并记录了下来。这一系列随笔将记录我从零开始配置vim的全部流程。这包括:笔者自己创建.vimrc的全部流程与每一个选项设置的原因。笔者选择的插件与设置的选项一个合格的编辑器需要什么?在配置v......
  • 06-可编辑多边形-边界层级操作介绍
    1点击这个正方体(元素,快捷键为5,不是F5)2如果选择的是边界,则框选不到任何东西。选择一个面后按delete进行删除,就变成一个空心的状态了。3边界-挤出。4这是我自己进行操作的结果。5选中这条边之后,可见点击1处,然后会弹出3处的样子,进行设置,可以对边界的形状进行设置。6......
  • day08_文本编辑器vim
    昨日作业解析关于rm命令的坑#删除乐队组合下所有的文件内容[root@linux0224~]#rm-rf/网易云音乐/华语/乐队组合/*#删除了乐队组合这个文件夹[root@linux0224~]#rm-rf/网易云音乐/华语/乐队组合/关于tartar-xf#这是一个通用的,万能解压缩命令,已经可以自动......
  • 编辑显示打印中文乱码
    在VSCode中显示的中文正常但打印乱码。打印别的中文正常。原因:该文件只是用正确的格式编码打开却还没有用该编码保存解法:  如果此时显示乱码,只需ctrl+z即可 效果: ......
  • 2.1.4 程序基本概念——编辑、编译、解释、调试的概念
    编辑概念C++程序的编辑即为,对代码的编写过程,完成这种过程需要借助相关软件,该类软件叫做C++代码编辑器。编译和解释概念计算机只能识别由0、1组成的二进制代码,称为机器码。所以我们现在使用高级编程语言编写的程序就需要一个翻译过程,将其转换成计算机认识的二进制代码,而这个翻......
  • 解决双击事件触发两次单击事件
    问题在写前端的时候,偶然发现,当同一个标签同时绑定了双击事件和单击事件在触发双击事件的时候,会先触发两次单击事件,这显然是不符合预期的解决办法可以通过增加一个延时来解决这个问题写一个按钮这里写一个按钮来演示<body><buttononclick="handleClick()"ondbl......
  • 使用JQuery双击修改Table中Td
    <html><head><metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/><style>table{border-collapse:collapse;border-spacing:0;margin-right:auto;......