RowSelecting не выполняется - PullRequest
       3

RowSelecting не выполняется

0 голосов
/ 19 сентября 2019

Я использую событие RowSelecting, чтобы выполнить запрос BQL.Я выбираю это событие, так как добавление BQL в событие RowSelected не рекомендуется.Моя цель состоит в том, чтобы назначить поле, не связанное с БД (логическое), которое используется для включения / отключения поля.Во время события RowSelected значение считывается, и определенное поле включается / отключается на основе этого значения.

При использовании отладчика я замечаю, что событие RowSelecting не запускается при первом открытии формы.Кнопка Отмена вызывает событие для запуска.Затем я замечаю документацию API ... RowSelected & FieldSelecting события происходят во время последовательности событий - отображение записи.RowSelecting не упоминается.

Моя цель - отключить поле на основе некоторого BQL.Каков наилучший способ выполнить BQL и отключить поле?Должен ли я использовать RowSelected?Документация говорит, чтобы этого избежать.В моем случае я ссылаюсь на SO-форму ввода счета-фактуры ... в частности SOInvoice DAC.

Ответы [ 2 ]

0 голосов
/ 19 сентября 2019

Вероятно, лучший способ сделать это - сделать поле NonDB вычисляемым полем, а затем установить setEnabled из RowSelected.https://www.acumatica.com/blog/using-the-pxformula-attribute-to-simplify-your-code/

В противном случае создайте запрос BQl в FieldDefaulting.

0 голосов
/ 19 сентября 2019

Вы можете расширить DAC на графике, добавив для этого атрибут PXUIEnabled.

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

В расширении DAC SOInvoiceExt у меня есть ...

public class SOInvoiceExt : PXCacheExtension<PX.Objects.SO.SOInvoice>
{
    #region UsrExtRefNbrDisabled 
    [PXBool]
    [PXUIField(DisplayName = "ExtRefNbr Disabled?")]
    public virtual bool? UsrExtRefNbrDisabled { get; set; }
    public abstract class usrExtRefNbrDisabled : PX.Data.BQL.BqlBool.Field<usrExtRefNbrDisabled> { }
    #endregion
}

Затем я добавил новое настраиваемое поле на экран.Убедитесь, что вы установили для CommitChanges значение True.

Затем в расширении графика я объединил атрибут PXUIEnabled с событием CachedAttached

[PXUIEnabled(typeof(Where<SOInvoiceExt.usrExtRefNbrDisabled, NotEqual<True>>))]
[PXMergeAttributes(Method = MergeMethod.Merge)]
protected virtual void SOInvoice_ExtRefNbr_CacheAttached(PXCache cache)
{ }

Я смог установить / снять флажок, и он был включен/ отключил поле.

Вот старая запись в блоге на эту тему: https://asiablog.acumatica.com/2016/11/pxuienabled-and-pxuirequired-attributes.html

...