Acumatica:仅初始化视图一次

问题描述 投票:0回答:1

我有一个简单的视图:

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:enter image description here

enter image description here

我将不胜感激任何意见或建议。

我正在更新我的问题

每次更改UI上的任何可编辑属性时,构造函数都会调用。使用静态布尔值的解决方案不起作用,因为当我打开和关闭UI时,静态字段已经保存。如果该字段不是静态的,那么它将在每次构造函数运行时重置,因此,它也将不起作用。

c# asp.net acumatica
1个回答
0
投票

我对您共享的屏幕不熟悉,因此我需要坚持更笼统的答复,并希望它能给您足够的帮助,以克服您的障碍,直到其他人可以提供更好的答案为止。我有点担心过滤器如何嵌入到选项卡中,但是我对构建这种屏幕结构并不十分熟悉。我的屏幕非常简单,过滤器始终位于顶部。

如您所述,您正在为视图定义一个构造函数。您会在Acumatica标准代码中找到许多示例,这些示例中的视图是通过构造函数控制的。在执行操作时,可以使用构造函数来限制根据屏幕上某些用户可选选项检索的结果。这为PO.POCreate中的“过滤器”和“ fixedDemand”构造函数提供了一个示例。这些填充各自的视图,并且fixedDemand对如何解释IEnumerable具有一些适用的概念。

视图的构造函数上返回的IEnumerable类型的对象是已定义的PXSelect的PXResultSet中的视图结构。您可以通过将PXResultset拆箱来浏览值,如EnumerateAndPrepareFixedDemands中所示。

© www.soinside.com 2019 - 2024. All rights reserved.