Acumatica: получение значения поля в заголовке из события сетки

Я новичок в индивидуальной разработке Acumatica и пытаюсь сделать что-то, что, как мне кажется, очень простое. У меня есть элемент управления Selector (DataClass: FSServiceOrder, DataField: BranchLocationID) в заголовке заказа на продажу, который позволяет пользователю устанавливать местоположение филиала. Ниже, в сетке Inventory, я просто хочу установить поле Warehouse в новой строке, равное значению вышеупомянутого селектора. Я могу установить Warehouse с жестко запрограммированным значением, но я понятия не имею, как ссылаться на селектор или получить его значение, поскольку оно, похоже, выходит за рамки переданного объекта PXCache:

protected void FSSODetPart_RowSelected(PXCache cache, PXRowSelectedEventArgs e)
{      
  string BranchLocationID = "" // Not sure how to get this value

  var row = (FSSODetPart)e.Row;
  cache.SetValueExt(row, "SiteID", BranchLocationID);
}

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


person TJP    schedule 14.06.2017    source источник
comment
Это простая задача, и я думаю, что лучшая рекомендация - просмотреть учебные материалы для Acumatica. Я говорю об этом, поскольку RowSelected - не место для обновления значений. Понимание событий и того, когда их использовать, избавит вас от головной боли и улучшит качество настройки. Чтобы получить значения текущего документа, вы будете использовать имя представления Current property. Пример: Document.Current для заголовка заказа на продажу DAC   -  person Brendan    schedule 14.06.2017
comment
Согласовано. Пожалуйста, поймите, что я был под прицелом с новой системой и настройками, которые нужно было сделать вчера. Теперь, когда я решил проблему, я наконец могу найти время, необходимое для того, чтобы погрузиться в тренировки. Спасибо.   -  person TJP    schedule 15.06.2017
comment
Я предположил, что это так. Просто исходя из моего опыта изучения Acumatica - записывайте события и когда их лучше всего использовать. Удачи в вашем проекте разработки Acumatica.   -  person Brendan    schedule 15.06.2017


Ответы (1)


В Acumatica экранные элементы управления привязаны к объектам DataView. DataViews содержит записи DAC. Обычной практикой является получение значения из текущей записи DAC в привязанном DataView.

Используйте текущий объект DataView, содержащий записи DAC FSServiceOrder:

string BranchLocationID = myDataview.Current.BranchLocationID;

Если вы не знаете имя DataView, на веб-сайте удерживайте Ctrl + Alt и щелкните поле UI BranchLocationID. Появится всплывающее окно с названием DataView.

Получение текущего объекта из коллекций DAC тоже должно работать, но предпочтительнее использовать DataView:

string BranchLocationID = Base.Caches[typeof(FSServiceOrder)].Current.BranchLocationID;

Также убедитесь, что вы установили для атрибута CommitChanges значение true в поле формы BranchLocationID в файле Aspx. Это гарантирует, что текущий объект будет запускать события в серверной части при изменении его значения.

     <px:PXSelector ID="edBranchLocationID" runat="server" 
                    DataField="BranchLocationID" CommitChanges="True" />
person Hugues Beauséjour    schedule 14.06.2017
comment
Превосходно. Спасибо! - person TJP; 14.06.2017