屏幕加载一次显示弹出窗口或智能对话框

时间:2018-06-26 18:51:24

标签: acumatica

每当第一次为每个记录加载屏幕时,我都希望向用户显示一个弹出窗口,并带有一些消息。

例如,当为特定销售订单加载“销售订单”屏幕时,它应该仅显示一次弹出窗口。然后,用户导航到下一个销售订单,它将再次仅显示该特定销售订单的弹出窗口。

我已经在构造函数和RowSelected事件中编写了代码,但没有Current记录。也就是说,CRCurrentCaseNotes在这两个事件中始终为null。但是,使用按钮(下面的代码示例中的{ViewNotes),它可以工作。

[PXViewName("CRCurrentCaseNotes")]
[PXCopyPasteHiddenView]
public PXSelect<Note,
	Where<CRCase.caseID, Equal<Current<CRCase.caseID>>>> CRCurrentCaseNotes;

public CRCaseMaintExtension()
	: base()
{
	if (CRCurrentCaseNotes.Current != null)
	{
	    CRCurrentCaseNotes.AskExt();
	}
}

protected virtual void CRCase_RowSelecting(PXCache cache, PXRowSelectingEventArgs e)
{
	var caseRow = (CRCase)e.Row;
	if (caseRow == null) return;

	if (CRCurrentCaseNotes.Current != null)
	{
	    CRCurrentCaseNotes.AskExt();
	}
}

// SAME CODE WORKS WITH THE BUTTON CLICK
public PXAction<CRCase> viewNotes;

[PXUIField(DisplayName = "View Notes")]
[PXButton]
protected virtual IEnumerable ViewNotes(PXAdapter adapter)
{
    if (CRCurrentCaseNotes.Current != null)
	{
	    CRCurrentCaseNotes.AskExt();
	}

    return adapter.Get();
}

1 个答案:

答案 0 :(得分:0)

尝试在修改主要DAC键字段时显示对话框:

protected void CRCase_CaseID_FieldUpdated(PXCache sender, PXFieldUpdatedEventArgs e)
{
   CRCase case = e.Row as CRCase;

   if (case != null && case.CaseID != null && !e.ExternalCall)
   {
      // Show dialog
   }
}

如果没有其他方法,可以使用JavaScript显示/隐藏SmartPanel:

document.getElementById("<%=SmartPanelID.ClientID %>").style.display = 'block';