屏幕加载后执行方法

时间:2017-07-21 04:25:06

标签: acumatica

我最近出现了一些项目,我需要在初始屏幕加载后立即执行一个方法。

例如,几个场景:

1)处理屏幕,其中处理屏幕中显示的数据来自外部API(动态加载和解析,然后显示以进行处理)

2)根据记录中的数据,在屏幕完成加载时自动加载第二个窗口/标签。

3)屏幕加载后弹出提示,通知用户已加载项目的情况。

所有这三个都带来了不同的挑战,这让我想知道处理这些问题的最佳日子是什么。

例如,第1项 - 目前我在" GetRecords"覆盖如果View不包含任何记录,则调用一个长时间运行的进程来获取记录。虽然这有效,但我提出了两个问题

  • 如果我让长进程运行然后请求刷新,则用户可以单击"处理/处理所有"在数据可用之前。这也会影响流程的安排。

  • 如果我使用WaitTillCompleted阻止进程,则会向用户显示一个标准页面加载微调器而不是"长时间运行进程"指标,但允许安排正常工作。

对于#2/3,新窗口/选项卡和弹出窗口的请求似乎都是从回发启动才能正常运行。这让我相信我需要在页面完成初始化后运行javascript方法来执行相应的操作。

使用本机框架方法处理这些情况有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

虽然这并没有直接回应在页面加载中调用方法的需要,但是这里有一些选项可用于检查运行进程以控制按钮或在弹出窗口外显示消息......

我们有一些领域需要等待或阻止用户在最后一个流程完成之前重新处理并实施了以下一些示例。

检查进程当前是否正在运行。可用于禁用按钮或存在操作按钮...

PXLongOperation.GetStatus(this.UID) == PXLongRunStatus.InProcess

等待当前正在运行的进程完成...

PXLongOperation.WaitCompletion(this.UID);

我在数据加载期间没有使用弹出窗口,但您最好不要为显示的数据显示行警告/错误而不是弹出窗口?

CyclesList.Cache.RaiseExceptionHandling<ARStatementCycle.statementCycleId>(
    row, row.StatementCycleId,
    new PXSetPropertyException(Messages.WRN_ProcessStatementDetectsOverdueInvoicesAndUnappliedPayments, PXErrorLevel.RowWarning));