基于SOShipment的PXProjection处理屏幕Selected列无法显示问题
解决Acumatica中SOShipment投影屏幕Selected字段显示问题
针对你遇到的基于SOShipment的PXProjection处理屏幕里Selected字段无法正常显示的问题,我来分享下具体的排查和解决步骤——这种情况我之前在做Acumatica自定义开发时也碰到过,主要是投影DAC的字段属性配置和系统布局缓存的问题:
核心原因分析
出现这类问题通常是两个关键点导致的:
- 投影DAC(PXProjection)默认不会自动继承源DAC(SOShipment)中Selected字段的UI可见性配置
- 系统布局缓存未更新,导致列配置面板无法识别到该字段
具体解决步骤
1. 在投影DAC中显式声明Selected字段
即使是基于SOShipment的投影,也需要在自定义的投影DAC里显式声明Selected字段,并配置正确的UI属性,确保系统能识别到它的可见性。示例代码如下:
// 自定义投影DAC示例 [PXProjection(typeof(Select<SOShipment, Where<SOShipment.status, Equal<SOStatus.open>>>))] public class MyShipmentProjection : IBqlTable { // 其他投影字段... // 显式声明Selected字段,绑定到SOShipment的对应字段 [PXDBBool(typeof(SOShipment.selected))] [PXDefault(false)] [PXUIField(DisplayName = "Selected", Visibility = PXUIVisibility.Visible)] public virtual bool? Selected { get; set; } public abstract class selected : PX.Data.BQL.BqlBool.Field<selected> { } }
这里关键是设置PXUIField的Visibility为PXUIVisibility.Visible(或者SelectorVisible,根据你的使用场景调整),这样表单设计和列配置面板就能正常识别到该字段。
2. 更新表单设计并保存布局
- 重新发布你的Acumatica项目,确保新的DAC字段属性生效
- 打开处理屏幕的表单设计,找到
Selected字段,将其从隐藏状态改为可见 - 调整该字段在网格中的位置,然后保存当前布局
3. 清除系统缓存(可选但推荐)
如果做完上述步骤后列配置还是看不到Selected字段,建议清除Acumatica的系统缓存:
- 进入
System > Management > Cache Management - 点击
Clear All Caches按钮,等待缓存清理完成 - 刷新浏览器后重新打开列配置,应该就能看到Selected字段了
额外注意事项
- 确保投影的查询语句(
PXProjection的typeof(Select<...>)部分)正确关联了SOShipment表,保证Selected字段能正确读取源数据 - 如果你之前手动修改过网格布局,可能需要先恢复默认布局,再重新添加Selected字段并保存自定义布局
内容的提问来源于stack exchange,提问作者Jerry Welliver
相关产品推荐
相关产品推荐

