如何在acumatica的Master detail form中显示带有detail form的Grid?

How to show Grid with detail form in Master detail form in acumatica?

我有母子关系表。

在子窗体中,我有一个网格,我想要自己的“插入”功能,所以我只是禁用了“AddNew”网格操作按钮和添加新的自定义按钮, 现在我想要什么

  1. 在自定义添加按钮中,我正在调用 child.Insert() 方法来添加行,
  2. 现在我可以在网格中看到添加的行,
  3. 我想使用 Detail 表单更新添加的行,而不是使用 Grid 行,所以我在 Grid 下面添加了一个 Formview
  4. 我想在 formview 中显示插入行的详细信息,它显示当前添加的行。
  5. 关于网格行的选择,我想详细显示网格的细节

如果用户编辑细节,那么我想在网格中显示所有编辑细节,

所以类似地,用户可以 add/edit 使用详细信息表单的多行,我该如何实现? 添加一行后,如果我想添加另一行然后单击添加按钮出现未保存数据错误,我如何实现上述功能?

 <px:PXFormView ID="rootCauseanaDataTab" runat="server" Width="100%" DataMember="MyData"
                        DataSourceID="ds" SkinID="Transparent">
                        <Template>
                            <px:PXLayoutRule runat="server" StartRow="true" StartColumn="True" LabelsWidth="SM" ControlSize="XM"></px:PXLayoutRule>
                            <px:PXButton ID="pxAddNew" runat="server" CommandName="AddNewData" CommandSourceID="ds" Text="Add Rootcause"></px:PXButton>
                            <px:PXLayoutRule runat="server" StartRow="true" StartColumn="True" LabelsWidth="SM" ControlSize="XM"></px:PXLayoutRule>
                            <px:PXSelector ID="edRootId" runat="server" AlreadyLocalized="False" DataField="CauseId" AutoRefresh="true">
                            </px:PXSelector>
                            <px:PXRichTextEdit ID="edRootCauseDesc" runat="server" AlreadyLocalized="False" DataField="Description">
                            </px:PXRichTextEdit>

                        </Template>
                    </px:PXFormView>
                    <px:PXGrid ID="PXGridNCTranRootCauseanaData" RepaintColumns="true" runat="server" Caption="Root Cause anaData" DataSourceID="ds" Height="150px" Width="100%" SkinID="Details" SyncPosition="true">
                        <ActionBar>
                            <Actions>
                                <AddNew Enabled="false" />
                            </Actions>
                        </ActionBar>
                        <Levels>
                            <px:PXGridLevel DataKeyNames="CauseId" DataMember="MyData">
                                <RowTemplate>
                                    <px:PXLayoutRule runat="server" ControlSize="XM" LabelsWidth="M" StartColumn="True" />
                                    <px:PXSelector ID="gdRootcauseId" runat="server" AllowEdit="true" AlreadyLocalized="False" DataField="RootCauseId" AutoRefresh="true">
                                    </px:PXSelector>
                                    <px:PXSelector ID="gdanaDataPerformedBy" AllowEdit="true" runat="server" AlreadyLocalized="False" DataField="anaDataPerformedBy" AutoRefresh="true">
                                    </px:PXSelector>
                                </RowTemplate>
                                <Columns>
                                    <px:PXGridColumn DataField="CauseId" TextAlign="Left" Width="135px" />
                                    <px:PXGridColumn DataField="Description" Width="80px" />
                                    
                                </Columns>
                            </px:PXGridLevel>
                        </Levels>
                        <AutoCallBack Target="tree" Command="Refresh" ActiveBehavior="True">
                            <Behavior RepaintControlsIDs="rootCauseanaDataTab"></Behavior>
                        </AutoCallBack>
                    </px:PXGrid>

关于您的表单未刷新的问题,我注意到您的 Target 设置为 Tree,您可以尝试将其也更改为 rootCauseanaDataTab 吗?并尝试添加 BlockPage="True" CommitChanges="True"

示例代码:

  <AutoCallBack Target="rootCauseanaDataTab" Command="Refresh" ActiveBehavior="True">
        <Behavior RepaintControlsIDs="rootCauseanaDataTab"  BlockPage="True" CommitChanges="True"></Behavior>
    </AutoCallBack>