Multi-Select Lookup Control в Microsoft Dynamics AX 2012

Использование Multi-Select Lookup Control в Microsoft Dynamics AX 2012.

Лукапы используются для выбора значений для элемента управления в Microsoft Dynamics AX. Значения могут быть записями из ссылочной таблицы или из нескольких источников данных в Microsoft Dynamics AX.

Лукап открывается при нажатии пользователем кнопки лукапа в любом поле Microsoft Dynamics AX. Существует несколько методов создания формы лукапа. В этой статье рассматривается метод создания лукапа, в котором можно выбрать несколько значений для одного элемента управления.

  1. Для начала создадим новую форму. Открываем AOT->Forms
  2. Правой кнопкой мыши на Forms. Выбираем New Form и назовём её TestMultiLookup

 

  • Переходим к узлу Design, нажимаем на нём правой кнопкой мыши, затем выбираем элемент управления StringEdit в New Control

  • Называем элемент управления MultiLookup и проставляем свойства как показано ниже

  • Аналогично, добавляем новый элемент управления Button и назовём его  GetValues и в свойстве Text напишем Values

  • Сейчас открываем узел формы Class declaration и пишем в нём следующий ниже код
SysLookupMultiSelectCtrl msCtrlCust;
  • Перекрываем метод формы init и пишем в нём следующий ниже код
Query query = new Query();

QueryBuildDataSource qbds;

super();

//creating query to show customer account and customer name

//the query must contain only those fields that should be visible on the lookup

qbds = query.addDataSource(tableNum(CustTable));

qbds.fields().dynamic(YesNo::No);

qbds.fields().addField(fieldNum(CustTable,AccountNum));

qbds = qbds.addDataSource(tableNum(DirPartyTable));

qbds.fields().dynamic(YesNo::No);

qbds.fields().addField(fieldNum(DirPartyTable,Name));

qbds.relations(true);

//assigning control and query to the class

msCtrlCust = SysLookupMultiSelectCtrl::constructWithQuery(element, MultiLookup, query);
  • Перекрываем метод clicked у кнопки GetValues и пишем в нём следующий ниже код
container values = msCtrlCust.get(); // get the rec Ids of the Cust table. To get the display value, use the getSelectedFieldValues method

int i;

super();

//loop through the container and show the selected Ids in the info log

for (i = 1; i <= conLen(values);i++)

{
    info(conPeek(values,i));
}
  • Лукап с множественным выбором готов. Чтобы посмотреть как он работает открываем форму
  • Открываем лукап у поля Customers. Видим, что можем выбрать несколько значений проставлением галочек на гриде.
  • Нажимаем OK  для выбора отмеченных строк.

  • Выбранные значения появились в поле Customers.
  • Чтобы увидеть RecId выбранных значений из CustTable, нажимаем кнопку Values

  • Значения будут выведены в инфолог

Примечание: чтобы удалить отмеченные записи, с них нужно снять галки в лукапе. Поле Customers будет нередактируемое, когда оно связано с лукапом множественного выбора и, следовательно, никаких изменений в самом поле сделать нельзя.

 

Ссылка на источник: https://community.dynamics.com/ax/b/dynamics101trainingcenterax/archive/2014/11/06/using-multi-select-lookup-control-in-microsoft-dynamics-ax-2012

Comments

So empty here ... leave a comment!

Добавить комментарий

Sidebar