在antd Table中插入可编辑的单元格实例


Posted in Javascript onOctober 28, 2020

最近遇到一个需求,要求表格中某一属性是可以手动改变的。看了antd Table 的官方组件,发现不太灵活,所以自己动手写了一下。

实现的思路大同小异,在columns中插入Input,很简单的,直接render中返回就好,只是中间遇到小插曲,改变一个input的值所有的都跟着改变,原来是都定义成了同一个变量,后来家里一个动态的后缀。具体代码见贴图

在antd Table中插入可编辑的单元格实例

补充知识:React+Ant Design实现可编辑单元格、添加行并利用form获取新增数据

实现如下图所示需求:

在antd Table中插入可编辑的单元格实例

实现功能说明:

点击添加按钮,在表格中添加新的空白行(如下图所示),在点击提交的时候获取空白行的数据

在antd Table中插入可编辑的单元格实例

在构造函数内定义:

constructor(props) {
 super(props)
 this.state = {
  dataSource:[{
   key: 0,
   name1: '',
   name2: '',
   name3: '',
  }],//应用信息化查询方法
  count:1,//总数
 }
}

注:如果dataSource定义为空数组,则页面初始化时表格没有输入框,需要点击添加行,如下图

在antd Table中插入可编辑的单元格实例

在render()中定义:

const { form: { getFieldDecorator },dataSource } = this.props

在return中添加如下代码:

<div>
</Form>
<Form.Item>
   <Table 
    columns={[
     { title: '名称1', dataIndex: 'name1',render: (text, record, index) => 
      <Form.Item key={index}>
       {getFieldDecorator(`tableDt[${index}].name1`)(
        <Input placeholder="请输入名称1" /> 
       )}
      </Form.Item>
     },
     { title: '名称2', dataIndex: 'name2',render: (text, record, index) => 
      <Form.Item key={index}>
       {getFieldDecorator(`tableDt[${index}].name2`)(
        <Input placeholder="请输入名称2" /> 
       )}
      </Form.Item>
     },
     { title: '名称3', dataIndex: 'name3',render: (text, record, index) => 
      <Form.Item key={index}>
       {getFieldDecorator(`tableDt[${index}].name3`)(
        <Input placeholder="请输入名称3" /> 
       )}
      </Form.Item>
     },
    ]}
    dataSource={this.state.dataSource}
    pagination={false}
   />
  </Form.Item>

 </Form>
 <Row gutter={16}>
  <Col span={24}>
   <Button onClick={ this.save } type="primary">提交</Button>
   <Button onClick={ this.toback }>返回</Button>
   <span className="tips">{this.state.saveTipCont}</span>
  </Col>
 </Row>
</div>

点击添加行按钮的操作方法:

//添加应用信息化查询方法行

handleRowAdd = () => {
 const { count, dataSource } = this.state;
 const newData = {
  key: count,
  name1: '',
  name2: '',
  name3: '',
 };
 this.setState({
  dataSource: [...dataSource, newData],
  count: count + 1,
 });
}

点击提交操作的方法:

//保存
save = () => {
 //处理校验值
 this.props.form.validateFields((err, values) => {
  // console.log(values)
  if(!err){
   // values.tableDt就是个表格数据的数组,可对获取的值进行处理校验处理
  }
 })
}

实现效果如下:

在antd Table中插入可编辑的单元格实例

value.tableDt值如下:

在antd Table中插入可编辑的单元格实例

以上这篇在antd Table中插入可编辑的单元格实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
理解JS事件循环
Jan 07 Javascript
JS事件添加和移出的兼容写法示例
Jun 20 Javascript
AngularJs Scope详解及示例代码
Sep 01 Javascript
jquery 标签 隔若干行加空白或者加虚线的方法
Dec 07 Javascript
jQuery判断网页是否已经滚动到浏览器底部的实现方法
Oct 27 jQuery
JavaScript实现多重继承的方法分析
Jan 09 Javascript
利用adb shell和node.js实现抖音自动抢红包功能(推荐)
Feb 22 Javascript
vue2.0 可折叠列表 v-for循环展示的实例
Sep 07 Javascript
详解element-ui日期时间选择器的日期格式化问题
Apr 08 Javascript
浅谈layui框架自带分页和表格重载的接口解析问题
Sep 11 Javascript
js实现从右往左匀速显示图片(无缝轮播)
Jun 29 Javascript
Vue实现计算器计算效果
Aug 17 Javascript
vue用ant design中table表格,点击某行时触发的事件操作
Oct 28 #Javascript
react antd表格中渲染一张或多张图片的实例
Oct 28 #Javascript
js实现淘宝浏览商品放大镜功能
Oct 28 #Javascript
js实现详情页放大镜效果
Oct 28 #Javascript
用js实现放大镜效果
Oct 28 #Javascript
如何在 ant 的table中实现图片的渲染操作
Oct 28 #Javascript
WebStorm中如何将自己的代码上传到github示例详解
Oct 28 #Javascript
You might like
用PHP实现Ftp用户的在线管理的代码
2007/03/06 PHP
set_exception_handler函数在ThinkPHP中的用法
2014/10/31 PHP
php简单判断文本编码的方法
2015/07/30 PHP
php 微信开发获取用户信息如何实现
2016/12/13 PHP
PHP 类与构造函数解析
2017/02/06 PHP
Javascript 倒计时源代码.(时.分.秒) 详细注释版
2011/05/09 Javascript
js querySelector和getElementById通过id获取元素的区别
2012/04/20 Javascript
中文输入法不触发onkeyup事件的解决办法
2014/07/09 Javascript
鼠标经过子元素触发mouseout,mouseover事件的解决方案
2015/07/26 Javascript
confirm确认对话框的实现方法总结
2016/06/17 Javascript
JavaScript中闭包的写法和作用详解
2016/06/29 Javascript
jquery实现焦点轮播效果
2017/02/23 Javascript
AngularJs实现聊天列表实时刷新功能
2017/06/15 Javascript
vue中动态select的使用方法示例
2019/10/28 Javascript
vue 解决文本框被键盘遮住的问题
2019/11/06 Javascript
vue项目实现图片上传功能
2019/12/23 Javascript
解决vuex数据页面刷新后初始化操作
2020/07/26 Javascript
Javascript var变量删除原理及实现
2020/08/26 Javascript
python计算书页码的统计数字问题实例
2014/09/26 Python
Pycharm学习教程(1) 定制外观
2017/05/02 Python
AI人工智能 Python实现人机对话
2017/11/13 Python
一行Python代码制作动态二维码的实现
2019/09/09 Python
解决pytorch-yolov3 train 报错的问题
2020/02/18 Python
澳洲小众品牌的集合网站:BNKR
2018/02/23 全球购物
大学生自我鉴定范文
2013/12/28 职场文书
大学生学年自我鉴定
2014/02/10 职场文书
心理咨询承诺书
2014/05/20 职场文书
门市房租房协议书
2014/12/04 职场文书
法院个人总结
2015/03/03 职场文书
幼儿园中班班级总结
2015/08/10 职场文书
市级三好生竞选稿
2015/11/21 职场文书
党员电教片《信仰》心得体会
2016/01/15 职场文书
技术入股协议书
2016/03/22 职场文书
2019年聘任书的写作格式及范文!
2019/07/03 职场文书
Redis 中使用 list,streams,pub/sub 几种方式实现消息队列的问题
2022/03/16 Redis
「玫瑰之王的葬礼」舞台剧主视觉图公开
2022/03/21 日漫