【发布时间】:2016-06-09 10:32:08
【问题描述】:
我有 3 个网格,一个网格作为头部,另一个作为细节,我想在网格第一次选择记录时刷新 2 个网格。我试过用AutoCallBack,但是还是只能刷新1格,怎么自动调用呢?
【问题讨论】:
-
您的意思是想让grid2显示与grid1中所选行相关的记录吗?那么当用户在grid1中选择一些记录时,grid2应该重新加载记录吗?
我有 3 个网格,一个网格作为头部,另一个作为细节,我想在网格第一次选择记录时刷新 2 个网格。我试过用AutoCallBack,但是还是只能刷新1格,怎么自动调用呢?
【问题讨论】:
有几种方法可以做到这一点,但一个很好的例子是查看 Org -> Org Structure 下的“Assignment and Approval Maps”。
在此屏幕中,当您单击“规则”网格时,“条件”网格会自动刷新。
这主要由两个项目控制
1) 顶部/主网格中的 AutoCallback 命令 2)下部/细节网格中的参数。
例如,在引用的屏幕中有两个网格“topGrid”和“bottomGrid”
topGrid 有以下内容
<AutoCallBack Target="tree" Command="Refresh" ActiveBehavior="True">
<Behavior RepaintControlsIDs="formRuleType,bottomGrid" ></Behavior>
</AutoCallBack>
当顶部网格行被选中/更改时,这将刷新底部网格。 topGrid 定义中的“KeepPosition”和“SyncPosition”标志将在选择行时强制发布(保持“当前”作为当前选择的行。
现在在底部网格中,您有以下内容:
<Parameters>
<px:PXControlParam ControlID="topGrid" Name="routeID" PropertyName="DataValues["AssignmentRouteID"]" Type="Int32" ></px:PXControlParam>
</Parameters>
这表示“bottomGrid”有一个名为“routeID”的参数,它从 topgrid 的“AssignmentRouteID”中提取它的值。
如果您查看 bottomGrid 的 BQL(主要数据成员是“Rules”,您将看到以下定义:
protected virtual IEnumerable rules([PXDBInt] int? routeID)
{
定义使用定义的参数,将其传递到此处以供选择语句返回正确的记录
使用这种方法,您可以在头部网格选择一行时刷新您的详细信息网格。同时,detail grid 使用 headgrid 中的一个值作为其 select 语句的参数。
【讨论】: