如何在acumatica的Master detail form中显示带有detail form的Grid?
How to show Grid with detail form in Master detail form in acumatica?
我有母子关系表。
在子窗体中,我有一个网格,我想要自己的“插入”功能,所以我只是禁用了“AddNew”网格操作按钮和添加新的自定义按钮,
现在我想要什么
- 在自定义添加按钮中,我正在调用 child.Insert() 方法来添加行,
- 现在我可以在网格中看到添加的行,
- 我想使用 Detail 表单更新添加的行,而不是使用 Grid 行,所以我在 Grid 下面添加了一个 Formview
- 我想在 formview 中显示插入行的详细信息,它显示当前添加的行。
- 关于网格行的选择,我想详细显示网格的细节
如果用户编辑细节,那么我想在网格中显示所有编辑细节,
所以类似地,用户可以 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>
我有母子关系表。
在子窗体中,我有一个网格,我想要自己的“插入”功能,所以我只是禁用了“AddNew”网格操作按钮和添加新的自定义按钮, 现在我想要什么
- 在自定义添加按钮中,我正在调用 child.Insert() 方法来添加行,
- 现在我可以在网格中看到添加的行,
- 我想使用 Detail 表单更新添加的行,而不是使用 Grid 行,所以我在 Grid 下面添加了一个 Formview
- 我想在 formview 中显示插入行的详细信息,它显示当前添加的行。
- 关于网格行的选择,我想详细显示网格的细节
如果用户编辑细节,那么我想在网格中显示所有编辑细节,
所以类似地,用户可以 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>