You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

新页面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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:50:24