如何在Acumatica的Aspx中声明主从结构PXGrid?
实现Acumatica主从PXGrid关联(ASPX配置指南)
我经常帮开发者配置Acumatica里的主从网格展示,这个需求其实非常典型——核心就是利用Acumatica的数据视图关联机制,配合PXGrid的同步属性来实现主行选中后子网格自动加载关联数据。下面我给你详细拆解ASPX里的配置步骤,以及关键注意点:
1. 先确认BLC里的数据视图关联(前提)
首先要确保你的BLC里两个数据视图已经建立了正确的主从关联:
- 主数据视图(比如
ParentView):基于父表,要包含主键字段 - 子数据视图(比如
ChildView):通过父表的主键关联,写法类似:public PXSelect<ChildTable, Where<ChildTable.parentID, Equal<Current<ParentTable.parentID>>>> ChildView;
这个关联是基础,ASPX的配置要依赖这个关联逻辑。
2. ASPX中主网格的配置
主网格需要允许用户选择行,并且要明确绑定主数据视图。示例代码如下:
<px:PXGrid ID="gridParent" runat="server" DataSourceID="ds" SkinID="Details" Width="100%" AllowSelect="True" SyncPosition="True"> <Levels> <px:PXGridLevel DataMember="ParentView"> <Columns> <!-- 这里添加父表需要展示的字段 --> <px:PXGridColumn DataField="ParentID" KeyField="True" /> <px:PXGridColumn DataField="ParentName" /> <!-- 其他字段... --> </Columns> </px:PXGridLevel> </Levels> <AutoSize Container="Window" Enabled="True" /> </px:PXGrid>
关键属性说明:
AllowSelect="True":必须开启,允许用户选中行SyncPosition="True":标记这个网格是主同步源KeyField="True":给主键字段加上这个标记,确保Acumatica能正确识别当前选中的记录
3. ASPX中子网格的配置
子网格的核心是绑定子数据视图,并且设置SyncPosition指向主网格的ID,这样就能自动同步主网格的选中状态,加载关联数据。示例代码:
<px:PXGrid ID="gridChild" runat="server" DataSourceID="ds" SkinID="Details" Width="100%" SyncPosition="gridParent"> <Levels> <px:PXGridLevel DataMember="ChildView"> <Columns> <!-- 这里添加子表需要展示的字段 --> <px:PXGridColumn DataField="ChildID" KeyField="True" /> <px:PXGridColumn DataField="ChildName" /> <px:PXGridColumn DataField="ParentID" /> <!-- 其他字段... --> </Columns> </px:PXGridLevel> </Levels> <AutoSize Container="Window" Enabled="True" /> </px:PXGrid>
关键属性说明:
SyncPosition="gridParent":指定子网格要同步主网格(ID为gridParent)的选中位置,主行切换时自动刷新子网格数据- 子数据视图
ChildView必须在BLC里关联主视图的Current记录,这样才能过滤出对应子条目
4. 额外优化建议
- 如果希望页面加载时默认选中主网格的第一行,可以在BLC的
Initialize或者RowSelected事件里设置主视图的Current记录:protected void Page_Init(object sender, EventArgs e) { if (ParentView.Select().FirstOrDefault() != null) { ParentView.Current = ParentView.Select().FirstOrDefault(); } } - 可以给子网格开启
AutoRefresh="True",确保数据更新时能自动刷新 - 如果需要更复杂的过滤逻辑,可以在BLC的子视图
RowSelecting事件里自定义过滤条件
这样配置后,当你选中主网格的任意记录,子网格就会自动加载所有关联的子条目,完美实现主从展示的需求。
内容的提问来源于stack exchange,提问作者RuslanDev
相关产品推荐
相关产品推荐

