Stock Item屏幕新增带Selector属性的Contact字段无法生效问题咨询
问题排查点
你当前的Selector配置存在以下几处可调整的问题,可按顺序排查:
- SubstituteKey冗余配置冲突
你字段本身是PXDBInt类型,存储的就是ContactID,此时额外设置SubstituteKey = typeof(CRContact.contactID)属于冗余配置,和DescriptionField的联动逻辑可能出现异常。如果你的预期是选择后界面显示联系人全名、后台存储ContactID,直接删除SubstituteKey配置即可。 - 缺少有效数据过滤条件
CRContact表默认包含逻辑删除标记、启用状态标记,你当前的Search语句没有加过滤,会把已删除、禁用的联系人也纳入查询范围,容易出现匹配异常,可修改Search逻辑如下:
[PXDBInt] [PXUIField(DisplayName="Contact",Visibility = PXUIVisibility.SelectorVisible)] [PXSelector(typeof( Search<CRContact.contactID, Where<CRContact.isActive, Equal<True>, And<CRContact.deletedDatabaseRecord, Equal<False>>>> ) , new Type[] { typeof(CRContact.contactID), typeof(CRContact.firstName), typeof(CRContact.lastName), typeof(CRContact.fullName), typeof(CRContact.email) } , DescriptionField = typeof(CRContact.fullName) , CacheGlobal = true)]
- CacheGlobal配置适配问题
CacheGlobal=true会将选择器的查询结果全局缓存,如果你需要联系人根据当前登录用户的权限、所属分支、关联业务账号做上下文过滤,需要删除该配置,否则会出现不同用户看到的选择列表完全一致、不会随上下文更新的问题。 - 页面配置检查
确认Stock Item页面中该Contact字段的控件绑定正确,开启了CommitChanges=true属性,否则选择后的值不会回写到缓存中,看起来就像功能失效。 - 权限验证
确认当前登录角色有CRContact实体的查看权限,权限不足时选择器会返回空列表无法正常选择。
故障截图参考

内容的提问来源于stack exchange,提问作者Med
相关产品推荐
相关产品推荐

