Как я могу принудительно включить поле в сетке Сведений о документах на экране Счета и корректировки

#acumatica

Вопрос:

В настоящее время я пытаюсь принудительно включить поле для события RowSelected, с которым я работал раньше, но теперь это не так.

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

Код, который я использую, такой, который, как я думал, сработает:

 protected virtual void APTran_RowSelected(PXCache cache, PXRowSelectedEventArgs e)  {  var aptran = e.Row as APTran;  if (aptran != null)  {  PXUIFieldAttribute.SetEnabledlt;APTranExt.usrGrantIDgt;(cache, aptran, true);  PXUIFieldAttribute.SetEnabledlt;APTranExt.usrReimbursementPeriodgt;(cache, aptran, true);  }  }  

Но это не работает.

Есть какие-нибудь идеи?

Спасибо…

Ответ №1:

Скорее всего, происходит то, что в представлении в настоящее время установлено значение разрешить обновление false, которое переопределяет состояние включено, которое вы устанавливаете. Один из способов обойти это заключается в том, что для этого статуса вы устанавливаете значение разрешить обновление равным true. Затем принудительно отключите всю сетку, кроме двух полей, которые вы хотите. Пример Ниже:

 protect virtual void APInvoice_RowSelected(PXCache cache, PXRowSelectedEventArgs e) {  if (e.Row is APinvoice row)  {  if (status)  {  Transactions.Cache.AllowUpdate = true  PXUIFieldAttribute.SetEnabled(Transactions.Cache, null, false);  PXUIFieldAttribute.SetEnabledlt;APTranExt.usrGrantIDgt;(Transactions.Cache, null, true);  PXUIFieldAttribute.SetEnabledlt;APTranExt.usrReimbursementPeriodgt;(Transactions.Cache, null, true);  }  } }  

Комментарии:

1. Я видел это в другом примере — так что, я думаю, мне нужно установить allowupdate на основе статуса — своего рода дублирование существующей бизнес-логики. Большое спасибо, Жан-Клод! ;D