前端 js实现 选中数据 动态 添加在表格中

如下图展示,表格上方有属性内容,下拉选中后,根据选中的内容,添加在下方的表格中。



实现方式,(要和后端约定,因为这些动态添加的字段都是后端返回的,后端自己会做处理,我们前端要做的是,就是根据后端的返回下拉数据,映射到表格上,并实现增删改查。)

一般可能会 用 ``模板字符串 方法,但是有时候可以直接map赋值。

如下 。

复制代码
			<>
            销售属性:
            <Select
              style={{ width: 260, marginRight: 10 }}
              size="small"
              mode="multiple"
              maxTagCount="responsive"
              value={this.props.salesAttrCodes}
              options={this.props.selsetList} // 展示的数据,后端返回,自己调取接口获取后赋值
              onChange={(value) => {
                this.handleChangeSalesAttr(value);
              }}
            />
          </>

	  handleChangeSalesAttr = (value) => {
	    this.props.changeSalesAttrCodes(value);
	    const addrowsData = this.props?.selsetListAll?.filter((item) => {
	      return value.includes(item.catePropCode);
	    });
	    const addrows =
	      addrowsData.length &&
	      addrowsData.map((item) => {
	        let them;
	        if (item?.isHand) {
	          them = { // 表格定义的规则 。
	            title: item.catePropName,
	            width: 180,
	            dataIndex: item.catePropCode,
	            align: 'left',
	            editable: true,
	            rules: [{ required: item.isMust, message: '必填' }],
	            field: () => {
	              return {
	                formOption: {
	                  type: '$textArea',
	                  props: {
	                    showCount: true,
	                    maxLength: 200,
	                    placeholder: '请输入且最多200个字',
	                  },
	                },
	                name: item.catePropCode,
	              };
	            },
	          };
	        } else {
	          them = {
	            title: item.catePropName,
	            width: 180,
	            dataIndex: item.catePropCode,
	            align: 'left',
	            editable: true,
	            rules: [{ required: item.isMust, message: '必填' }],
	            field: () => {
	              return {
	                formOption: {
	                  type: '$select',
	                  props: {
	                    placeholder: '请选择',
	                    options: item.valueNames.split(';').map((item) => {
	                      return {
	                        label: item,
	                        value: item,
	                      };
	                    }),
	                  },
	                },
	                name: item.catePropCode,
	              };
	            },
	          };
	        }
	        return them;
	      });
	      // 重新触发更新表格
	    this.setState({
	      AddTableColumns: addrows,
	    });
	  };
相关推荐
weixin_4414552611 分钟前
说说Java有哪些集合类
java·开发语言
合作小小程序员小小店18 分钟前
web网页开发,在线%台球俱乐部管理%系统,基于Idea,html,css,jQuery,jsp,java,ssm,mysql。
java·前端·jdk·intellij-idea·jquery·web
李趣趣18 分钟前
C#中关于ContextMenuStrip批量添加Item的问题
开发语言·c#
张人玉22 分钟前
C# 串口通讯中 SerialPort 类的关键参数和使用方法
开发语言·c#·串口通讯
不爱吃糖的程序媛26 分钟前
Electron 应用中的系统检测方案对比
前端·javascript·electron
泷羽Sec-静安29 分钟前
Less-9 GET-Blind-Time based-Single Quotes
服务器·前端·数据库·sql·web安全·less
白山云北诗33 分钟前
网站被攻击了怎么办?如何进行DDoS防御?
开发语言·网络安全·php·ddos·防ddos·防cc
pe7er42 分钟前
用高阶函数实现递归:从匿名函数到通用递归生成器
前端·javascript
程序定小飞1 小时前
基于springboot的作业管理系统设计与实现
java·开发语言·spring boot·后端·spring
IT古董1 小时前
全面理解 Corepack:Node.js 的包管理新时代
前端·node.js·corepack