我有一个简单的视图:
public PXSelect<MPEmployeeTermination, Where<MPEmployeeTermination.employeeID,
Equal<Current<TerminationFilter.employeeID>>,
And<MPEmployeeTermination.payRunID, Equal<Current<TerminationFilter.payRunID>>>>> EmployeeTerminations;
以及初始化它的方法:
public IEnumerable employeeTerminations()
{
return _terminationHandler.GetEmployeeTerminations(EmployeeTerminations, EmployeeTerminationItems, OtherTerminationPayments);
}
GetEmployeeTerminations
方法(返回IEnumerable
)很繁重并且经常运行-此UI中的任何单个操作。当调用此方法时,我找不到任何控件,而在初始化过程中(调用构造函数时)只能调用一次方法GetEmployeeTerminations
。我可以使用布尔静态字段一次运行该方法,但是我相信存在Acumatica模式推荐的其他属性(例如属性等)。可以设置EmployeeTerminations = GetEmployeeTerminations
,但尚不清楚如何将IEnumerable
转换为PXSelect<MPEmployeeTermination>
]。我该如何在适当的Acumatica模式中做到这一点,或者存在比静态字段更好的模式?
我将不胜感激任何意见或建议。
我正在更新我的问题:
每次更改UI上的任何可编辑属性时,构造函数都会调用。使用静态布尔值的解决方案不起作用,因为当我打开和关闭UI时,静态字段已经保存。如果该字段不是静态的,那么它将在每次构造函数运行时重置,因此,它也将不起作用。
我对您共享的屏幕不熟悉,因此我需要坚持更笼统的答复,并希望它能给您足够的帮助,以克服您的障碍,直到其他人可以提供更好的答案为止。我有点担心过滤器如何嵌入到选项卡中,但是我对构建这种屏幕结构并不十分熟悉。我的屏幕非常简单,过滤器始终位于顶部。
如您所述,您正在为视图定义一个构造函数。您会在Acumatica标准代码中找到许多示例,这些示例中的视图是通过构造函数控制的。在执行操作时,可以使用构造函数来限制根据屏幕上某些用户可选选项检索的结果。这为PO.POCreate中的“过滤器”和“ fixedDemand”构造函数提供了一个示例。这些填充各自的视图,并且fixedDemand对如何解释IEnumerable具有一些适用的概念。
视图的构造函数上返回的IEnumerable类型的对象是已定义的PXSelect的PXResultSet中的视图结构。您可以通过将PXResultset拆箱来浏览值,如EnumerateAndPrepareFixedDemands中所示。