Использование Multi-Select Lookup Control в Microsoft Dynamics AX 2012.
Лукапы используются для выбора значений для элемента управления в Microsoft Dynamics AX. Значения могут быть записями из ссылочной таблицы или из нескольких источников данных в Microsoft Dynamics AX.
Лукап открывается при нажатии пользователем кнопки лукапа в любом поле Microsoft Dynamics AX. Существует несколько методов создания формы лукапа. В этой статье рассматривается метод создания лукапа, в котором можно выбрать несколько значений для одного элемента управления.
- Для начала создадим новую форму. Открываем AOT->Forms
- Правой кнопкой мыши на 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
Все комментарии
Чтобы оставить комментарий, необходимо войти или зарегистрироваться.
Пока нет комментариев. Будьте первым!