Показать всплывающее окно или умный диалог один раз при загрузке экрана - PullRequest
0 голосов
/ 26 июня 2018

Я хочу показать всплывающее окно с некоторым сообщением пользователю, когда экран загружается впервые для каждой записи.

Например, когда экран заказа на продажу загружен для определенного заказа на продажу, всплывающее окно должно отображаться только один раз. Затем пользователь переходит к следующему заказу на продажу, он должен снова показывать всплывающее окно для этого конкретного заказа на продажу только один раз.

Я написал код в конструкторе и событии RowSelected, но он не имеет текущей записи. То есть CRCurrentCaseNotes всегда равно нулю в обоих этих событиях. Однако с кнопкой (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 голосов
/ 26 июня 2018

Попробуйте отобразить диалоговое окно при изменении основного поля ключа ЦАП:

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';
...