Acumatica:具有多个目标的 AutoCallback

Dis*_*4by 2 c# erp acumatica

我有3个网格,一个网格作为头部,另一个作为细节,当网格第一次选择记录时,我想刷新2个网格。我试过使用AutoCallBack,但仍然只能刷新 1 个网格,如何自动调用它?

Jef*_*ams 5

有几种方法可以做到这一点,但一个很好的例子是查看组织 -> 组织结构下的“分配和批准地图”。

在此屏幕中,当您单击“规则”网格时,“条件”网格会自动刷新。

这主要由两个项目控制

1) 顶部/主网格中的 AutoCallback 命令 2) 下部/细节网格中的参数。

例如,在引用的屏幕中有两个网格“topGrid”和“bottomGrid”

topGrid 有以下内容

 <AutoCallBack Target="tree" Command="Refresh" ActiveBehavior="True">
   <Behavior RepaintControlsIDs="formRuleType,bottomGrid" ></Behavior>
 </AutoCallBack>
Run Code Online (Sandbox Code Playgroud)

当topgrid行被选择/更改时,这将刷新bottomGrid。topGrid 定义中的“KeepPosition”和“SyncPosition”标志将在选择行时强制发布(保持“当前”作为当前选择的行。

现在在底部网格中,您有以下内容:

<Parameters>
   <px:PXControlParam ControlID="topGrid" Name="routeID" PropertyName="DataValues[&quot;AssignmentRouteID&quot;]" Type="Int32" ></px:PXControlParam>
</Parameters>   
Run Code Online (Sandbox Code Playgroud)

也就是说“bottomGrid”有一个名为“routeID”的参数,它从topgrid的“AssignmentRouteID”中提取它的值。

如果您查看 bottomGrid 的 BQL(主要数据成员是“规则”,您将看到以下定义:

protected virtual IEnumerable rules([PXDBInt] int? routeID)
{
Run Code Online (Sandbox Code Playgroud)

定义使用已定义的参数,将其传入此处以供选择语句使用以返回正确的记录

使用这种方法将允许您在头部网格选择一行时刷新细节网格。同时,细节网格使用 headgrid 中的一个值作为它的 select 语句的参数。