Prepare Replenishment自定义下拉字段始终返回NULL问题求助
解决Acumatica中Prepare Replenishment自定义下拉字段返回NULL的问题
我帮你梳理下这个自定义下拉字段始终返回NULL的常见原因,以及对应的解决办法:
核心问题分析
从你提供的代码片段来看,主要有两个关键遗漏点导致字段值无法被持久化和读取:
1. 替换UI属性为持久化属性
你当前使用的[PXString]是仅用于UI层的属性,不会将选中的值保存到数据库。要让字段值能被持久化,必须替换为[PXDBString](对应数据库中的字符串类型字段),同时根据你的字段长度设置参数:
2. 添加抽象BQL字段定义
在Acumatica的DAC扩展中,必须为自定义字段定义对应的抽象BQL字段,这样框架才能正确识别字段并处理数据绑定。
修正后的完整DAC扩展代码
public class INReplenishmentFilterExt : PXCacheExtension<PX.Objects.IN.INReplenishmentFilter> { #region UsrMonthSelection [PXDBString(1, IsFixed = true)] // 用PXDBString实现持久化,IsFixed=true适配单字符选项 [PXUIField(DisplayName="Months")] [PXStringList( new[] { "1", "2", "3", "4", "5", "6" }, new[] { "One", "Two", "Three", "Four", "Five", "Six" } )] public virtual string UsrMonthSelection { get; set; } // 必须添加的抽象BQL字段定义 public abstract class usrMonthSelection : PX.Data.BQL.BqlString.Field<usrMonthSelection> { } #endregion }
额外检查项
- 数据库字段是否存在:如果是首次添加该字段,需要确保发布Customization Project时,Acumatica已在
INReplenishmentFilter表中创建了UsrMonthSelection列。如果之前发布未生成,重新发布自定义项目即可。 - 页面控件绑定:确认Prepare Replenishment筛选页面上的下拉控件,DataField属性已正确设置为
UsrMonthSelection,避免控件和字段绑定不匹配。
内容的提问来源于stack exchange,提问作者Muralidharan Ramakrishnan
相关产品推荐
相关产品推荐

