如何在Acumatica销售订单弹窗中按ItemClassId获取属性?
正确实现方法
1. 修正图(Graph)中的代码定义
在销售订单Item查找弹窗的扩展图中,正确定义主数据视图与属性关联视图,移除原代码的重复定义错误:
// 主视图:筛选待查找的库存商品(可根据业务需求调整Where条件) public PXSelect<InventoryItem, Where<InventoryItem.stkItem, Equal<True>>> ItemSearch; // 属性视图:关联商品的ItemClassId到商品类别DAC,自动加载对应属性 [PXViewName("Attributes")] public CSAttributeGroupList<InventoryItem, INItemClass> Attributes;
关键说明
CSAttributeGroupList的泛型参数规则:第一个参数是查找弹窗的主数据DAC(这里是InventoryItem,即选中的商品),第二个参数是属性所属的DAC(这里是INItemClass,即商品类别)。- 框架会自动通过
InventoryItem.ItemClassId与INItemClass.ItemClassId的关联关系,加载对应类别的属性组和属性值。
2. ASPX页面配置
在查找弹窗的ASPX页面中,添加属性网格并绑定到Attributes视图:
<px:PXGrid ID="gridAttributes" runat="server" DataSourceID="ds" ViewName="Attributes" Width="100%"> <Levels> <px:PXGridLevel DataMember="Attributes"> <Columns> <px:PXGridColumn DataField="AttributeID" Width="150" /> <px:PXGridColumn DataField="Description" Width="250" /> <px:PXGridColumn DataField="Value" Width="200" /> </Columns> </px:PXGridLevel> </Levels> </px:PXGrid>
3. 系统配置验证
确保对应INItemClass(商品类别)已在系统中完成以下配置:
- 创建并启用属性组
- 为属性组添加属性并设置对应值
- 目标商品的
ItemClassId字段已关联到该类别
常见排查点
- 检查选中商品的
ItemClassId是否非空(未关联类别的商品无属性可显示) - 验证商品类别的属性组是否处于启用状态
- 确认图扩展类正确继承自原查找弹窗的图(例如
SOOrderEntry_ItemLookupExtension : PXGraphExtension<SOOrderEntry.ItemLookup>)
内容的提问来源于stack exchange,提问作者Alberto Bello
相关产品推荐
相关产品推荐

