X++扩展表display方法获取Enum枚举文本显示值问题求助
问题原因
你当前的display方法直接返回ServiceSubStatus枚举类型值,界面渲染时默认会输出枚举的整数编码值,只要调整逻辑输出枚举对应的标签文本即可解决。
解决方案
方案1:调整display方法返回字符串(无需修改表单配置,兼容性最好)
修改方法返回类型为字符串,调用X++标准enum2Label方法获取枚举的多语言标签文本:
[ExtensionOf(tableStr(EntAssetObjectTable))] public final class ObjectTable_Extension { public display str ServiceSubStatusDisplay() { ServiceSubStatus subStatus = ServiceStatus::findByRecId(this.ServiceStatus).ServiceSubStatus; // 兼容空值场景,空值返回空字符串 return subStatus ? enum2Label(subStatus) : ''; } }
提示:如果需要保留原方法名,也可直接修改原方法的返回类型,建议方法名增加标识后缀避免和表原有字段重名
方案2:不修改代码,调整表单控件属性
如果不想改动现有代码逻辑,可直接修改绑定该字段的表单控件属性:
- 找到对应表单控件的「DataType」属性,选择
ServiceSubStatus枚举类型 - 将控件的「DisplayType」属性设置为
Text(而非默认的Value)
保存并同步表单后即可正常显示枚举文本。
内容的提问来源于stack exchange,提问作者Granger
相关产品推荐
相关产品推荐

