如何在不同BLC的另一页面显示自定义字段?(以Brand字段为例)
在SOOrderEntry销售订单明细页面展示InventoryItem的自定义Brand字段
嘿,这个需求我之前处理过好多次,其实按照Acumatica的自定义规范,分几步就能轻松实现,咱们一步步来:
1. 确认自定义Brand字段的基础信息
首先得确认你在InventoryItemMaint里创建的Brand字段具体细节:
- 字段的系统名称(比如
UsrBrand,Acumatica自定义字段默认会加Usr前缀) - 确认这个字段是存储在
InventoryItemDAC对应的数据库表中(一般自定义字段都会默认存在)
2. 扩展SOLine DAC,关联InventoryItem的Brand字段
销售订单明细对应的核心DAC是SOLine,我们需要在它的扩展类中添加一个字段,用来关联并展示InventoryItem里的Brand值。创建以下DAC扩展代码:
using PX.Data; using PX.Objects.IN; using PX.Objects.SO; public class SOLineExt : PXCacheExtension<SOLine> { #region UsrBrand // 通过InventoryID关联InventoryItem的自定义Brand字段 [PXDBScalar(typeof(Search<InventoryItem.usrBrand, Where<InventoryItem.inventoryID, Equal<SOLine.inventoryID>>>))] [PXUIField(DisplayName = "Brand", Enabled = false)] // 设置为只读,因为值从库存项目拉取 public virtual string UsrBrand { get; set; } public abstract class usrBrand : PX.Data.BQL.BqlString.Field<usrBrand> { } #endregion }
3. 在SOOrderEntry页面的明细网格中添加Brand列
接下来把这个字段加到销售订单明细的页面上,通过自定义项目操作:
- 打开你的Acumatica自定义项目,添加
SOOrderEntry页面(对应页面ID:SO301000) - 找到页面里的Transactions明细网格(就是显示销售订单行的表格)
- 点击网格的「编辑」按钮,在列列表中点击「添加」
- 在弹出的列属性窗口中:
- 「数据字段」选择刚才创建的
SOLineExt.UsrBrand - 设置「显示名称」为「Brand」,调整合适的宽度
- 可以勾选「只读」确保字段不能在订单明细里修改(如果不需要修改的话)
- 「数据字段」选择刚才创建的
- 保存自定义项目并发布
4. 验证效果
发布完成后,打开任意销售订单进入明细页面,就能看到新增的Brand列自动显示对应库存项目的品牌值了。如果需要让这个字段支持筛选或者排序,你可以在DAC扩展的字段上添加PXFilterable属性,或者在页面网格的列属性里开启筛选功能。
内容的提问来源于stack exchange,提问作者JackZeng
相关产品推荐
相关产品推荐

