Получить значение «Непостоянное поле» из PXSmartPanel - PullRequest
0 голосов
/ 28 июня 2018

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

Идентификатор текстового поля cstFieldSSN, а идентификатор непостоянного поля UsrSSN

Мой метод выглядит так: (Я вызываю диалоговое окно при нажатии на пункт меню)

// Initialize 'myPanel'
public PXFilter<PX.Objects.CR.Contact> myPanel;

// Make the 'Letters' menu available to 'Automation Steps'
public PXAction<PX.Objects.CR.Contact> letters;
[PXUIField(DisplayName = "Letters", MapEnableRights = PXCacheRights.Select)]
[PXButton(SpecialType = PXSpecialButtonType.Report)]
protected virtual IEnumerable Letters(PXAdapter adapter, string reportID)
{
    if (myPanel.AskExt(true) != WebDialogResult.OK) return;

    PXReportRequiredException ex = null;

    Contact contact = Base.Caches[typeof(Contact)].Current as Contact;

    Dictionary<string, string> parameters = new Dictionary<string, string>();

    parameters["ContactID"] = contact.ContactID.ToString();

    /** Here's the issue **/
    parameters["SSN"] = myPanel.Current.UsrSSN;

    throw new PXReportRequiredException(parameters, reportID, "");

    if (ex != null) throw ex;

    return adapter.Get();
}

Я получаю

«PX.Objects.CR.Contact» не содержит определения для «UsrSSN», и метод расширения «UsrSSN», принимающий первый аргумент типа «PX.Objects.CR.Contact», не найден (вы пропустили директива об использовании или ссылка на сборку?)

Может ли кто-нибудь помочь мне или указать мне ресурс?

1 Ответ

0 голосов
/ 29 июня 2018

Благодаря @Brendan мой окончательный код выглядит так:

    // Initialize 'myPanel'
    public PXFilter<PX.Objects.CR.Contact> myPanel;

    // Make the 'Letters' menu available to 'Automation Steps'
    public PXAction<PX.Objects.CR.Contact> letters;
    [PXUIField(DisplayName = "Letters", MapEnableRights = PXCacheRights.Select)]
    [PXButton(SpecialType = PXSpecialButtonType.Report)]
    protected virtual IEnumerable Letters(PXAdapter adapter, string reportID)
    {
        // Launch the PXSmartPanel dialog and test result
        if (myPanel.AskExt(true) == WebDialogResult.OK)
        {
            PXReportRequiredException ex = null;

            Contact contact = Base.Caches[typeof(Contact)].Current as Contact;

            Dictionary<string, string> parameters = new Dictionary<string, string>();

            //*** Get the extended class
            var myExt = myPanel.Current.GetExtension<ContactExt>();

            parameters["ContactID"] = contact.ContactID.ToString();

            //*** Get the extended class's custom field value
            parameters["SSN"] = myExt.UsrSSN;

            throw new PXReportRequiredException(parameters, reportID, "");

            if (ex != null) throw ex;
        }

        return adapter.Get();        
    }

Но мне также пришлось установить для свойства CommitChanges в текстовом поле значение True, чтобы значение было передано обратно в кэшированный контакт, что позволило мне его использовать.

...