新页面CSAttributes使用异常:设置Equipment Type后属性网格不加载
求助:Acumatica中设置Equipment Type后属性网格无法自动加载
我现在要开发一个新页面,参照Acumatica自带的Item Class(属性定义)和Non Stock Item页面(属性实现)的方式来使用CSAttributes:
- Item Class:负责属性的定义配置
- Non Stock Item页面:负责属性的实际录入使用
属性定义页面效果:展示属性配置网格,包含IsActive、AttributeID、Description等列,用于配置该类型对应的属性
NonStockItem页面效果:当选择Item Class后,属性网格会自动加载该类配置好的属性,供用户录入值
NOTE:我已经简化了页面代码,缩小了ASPX中可能需要排查的属性范围。
目前属性定义页面的实现(已正常工作)
Graph代码
#region Datamembers public PXSelect<MDEquipmentType> EquipmentType; [PXViewName("Attributes")] public CSAttributeGroupList<MDEquipmentType, MDEquipment> Mapping; #endregion
ASPX代码
<px:PXTabItem Text="Attributes"> <Template> <px:PXGrid ID="grid" runat="server" DataSourceID="ds" Height="150px" Style="z-index: 100; border: 0px;" Width="100%" ActionsPosition="Top" SkinID="Details" MatrixMode="True"> <Levels> <px:PXGridLevel DataMember="Mapping"> <RowTemplate> <px:PXSelector CommitChanges="True" ID="edAttributeID" runat="server" DataField="AttributeID" AllowEdit="True" FilterByAllFields="True" /> </RowTemplate> <Columns> <px:PXGridColumn DataField="IsActive" AllowNull="False" TextAlign="Center" Type="CheckBox" /> <px:PXGridColumn DataField="AttributeID" Width="81px" AutoCallBack="true" LinkCommand="CRAttribute_ViewDetails" /> <px:PXGridColumn AllowNull="False" DataField="Description" Width="351px" /> <px:PXGridColumn DataField="SortOrder" TextAlign="Right" Width="81px" SortDirection="Ascending" /> <px:PXGridColumn AllowNull="False" DataField="Required" TextAlign="Center" Type="CheckBox" /> <px:PXGridColumn AllowNull="True" DataField="CSAttribute__IsInternal" TextAlign="Center" Type="CheckBox" /> <px:PXGridColumn AllowNull="False" DataField="ControlType" Type="DropDownList" Width="81px" /> <px:PXGridColumn AllowNull="True" DataField="DefaultValue" Width="100px" RenderEditorText="False" /> </Columns> </px:PXGridLevel> </Levels> <AutoSize Enabled="True" MinHeight="150" /> </px:PXGrid> </Template> </px:PXTabItem>
当前状态:属性定义页面一切正常,所有配置的属性都能正确保存到数据库的CSAttributeGroup表中,页面展示也完全符合预期。
数据录入页面的问题(属性无法自动加载)
现在到了数据录入环节,问题来了:当我在页面上设置好Equipment Type后,属性网格并没有像Nonstock Item页面那样自动加载对应的属性,网格里是空的。
数据录入页面的Graph代码
public class MDEquipmentEntry : PXGraph<MDEquipmentEntry, MDEquipment> { #region Datamembers public PXSelect<MDEquipment> Equipment; public CRAttributeList<MDEquipment> Answers; }
ASPX代码
<px:PXTabItem Text="Attributes"> <Template> <px:PXGrid ID="PXGridAnswers" runat="server" Caption="Attributes" DataSourceID="ds" SkinID="Inquire" Width="100%" Height="200px" MatrixMode="True"> <Levels> <px:PXGridLevel DataMember="Answers"> <Columns> <px:PXGridColumn DataField="AttributeID" /> <px:PXGridColumn DataField="isRequired" TextAlign="Center" Type="CheckBox" Width="80px"/> <px:PXGridColumn DataField="Value" Width="300px" AllowShowHide="False" AllowSort="False" /> </Columns> <Layout FormViewHeight="" /> </px:PXGridLevel> </Levels> <AutoSize Enabled="True" MinHeight="200" /> <ActionBar> <Actions> <Search Enabled="False" /> </Actions> </ActionBar> <Mode AllowAddNew="False" AllowColMoving="False" AllowDelete="False" /> </px:PXGrid> </Template> </px:PXTabItem>
我已经确认在Equipment Type的选择器上添加了CommitChanges="True"属性,也去查了Nonstock Item页面的代码,没找到专门触发属性加载的FieldUpdated事件,但它就是能自动加载。请问我的代码里到底缺了什么?
内容的提问来源于stack exchange,提问作者Bill Blake
相关产品推荐
相关产品推荐

