如何在Acumatica网格中添加列展示其他页面的字段值
解答
不需要使用PXDefault特性实现该需求,PXDefault的作用是为字段提供默认初始值,并不负责跨表关联拉取已存在的关联数据。
你可以按照以下两种场景选择对应实现方案:
如果你需要销售订单上展示的字段实时同步库存商品的最新值,不需要在订单层面留存历史值:
给销售订单明细DAC(SOLine)添加未绑定类型的自定义字段,通过PXDBScalar特性关联库存商品表(InventoryItem)拉取对应自定义字段的值,参考代码示例:public class SOLineExt : PXCacheExtension<PX.Objects.SO.SOLine> { #region UsrInventoryCustomField // 字段类型要和InventoryItem上的自定义字段类型保持一致,这里以字符串为例 [PXString] [PXUIField(DisplayName = "你自定义字段的显示名称")] [PXDBScalar(typeof(Search<InventoryItemExt.usrCustomField, Where<InventoryItem.inventoryID, Equal<SOLine.inventoryID>>>))] public virtual string UsrInventoryCustomField { get; set; } public abstract class usrInventoryCustomField : PX.Data.BQL.BqlString.Field<usrInventoryCustomField> { } #endregion }配置完成后在SO301000页面的自定义编辑器中,给销售订单明细网格添加对应自定义字段列,发布自定义即可正常展示。
如果你需要在销售订单保存时留存选择商品时该字段的快照值,后续库存商品字段修改不影响已创建的订单:
将SOLine上的自定义字段改为绑定类型,在InventoryID字段的FieldUpdated事件中编写逻辑,根据选中的库存ID查询对应自定义字段的值赋值给SOLine上的字段即可,同样不需要用到PXDefault。
内容的提问来源于stack exchange,提问作者Den251
相关产品推荐
相关产品推荐

