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. Существует несколько методов создания формы лукапа. В этой статье рассматривается метод создания лукапа, в котором можно выбрать несколько значений для одного элемента управления.
- Для начала создадим новую форму. Открываем 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
Comments
So empty here ... leave a comment!