如何实现根据下拉列表的value获取key原创
金蝶云社区-JeremyG
JeremyG
13人赞赏了该文章 4,757次浏览 未经作者许可,禁止转载编辑于2022年04月16日 09:58:24
summary-icon摘要由AI智能服务提供

本文描述了一个处理单据中数量与尺寸单位(通过下拉列表选择)字段拼接的需求背景。需通过下拉列表的value值反向查询得到key值,再与数量值拼接。文中提供了实现思路、具体实现代码,包括获取数据实体、数量值、尺寸单位value、从数据模型中查找key,以及最终拼接的逻辑。还指出了动态赋值下拉项的注意事项,并提供了一种简化问题的方案,即将value与key设为相同。

关键字:下拉列表


一、需求背景

比如一张单据,有一个数量的字段,还有一个尺寸的字段,尺寸为下拉列表。其中下拉列表的key是单位的名称,value是0123这种值。在后台我们获取下拉列表,默认取到的是value。假设需要得到数量+下拉列表key拼起来的这个字段,我们就需要通过下拉列表的value获取到对应的key。

image.png


二、思路与方案

通过value获取下拉列表的key,然后手动拼接即可。



三、实现过程

实现代码:在对应的事件中通过如下代码实现

// 获取界面数据实体
DynamicObject dataEntity = this.getModel().getDataEntity();
// 获取数量值
Integer count = dataEntity.getInt("kdec_count");
// 获取尺寸单位字段值,这里获取到的是value,而不是key
String unitValue = dataEntity.getString("kdec_unit");
// 获取单据实体类型
MainEntityType dataEntityType = (MainEntityType) dataEntity.getDataEntityType();
// 获取所有实体字段集合
DataEntityPropertyCollection properties = dataEntityType.getProperties();
// 获取尺寸单位字段的数据模型
ComboProp comboUnitProp = (ComboProp) properties.get("kdec_unit");
// 根据下拉列表(尺寸单位字段)的value获取到key
String unitName = comboUnitProp.getItemByName(unitValue);
//拼接数量和尺寸单位名称
String defaultSplice = count + unitName;


其中比较关键的代码:

// 获取所有实体字段集合
DataEntityPropertyCollection properties = dataEntityType.getProperties();

这里就可以拿到页面上所有实体字段的数据模型,可以获取很多该字段的属性值。


四、效果图

image.png

image.png


五、开发环境版本

不限


六、注意事项

下拉项如果是动态赋值的,那么是获取不到的,因为这里是取数据模型中的值,动态构造的数据没有在数据模型中。


七、参考资料

【开发平台】指导手册
学习成长中心




后记:

本案例只是为了说明问题,如果只是针对当前案例,那么可以把下拉项的value和key设置成相同的,就不存在转换的问题了。如下图即可

image.png

图标赞 13
13人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!