AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 03.07.2024, 11:14   #14  
DS26 is offline
DS26
Участник
 
2 / 14 (1) ++
Регистрация: 08.10.2014
Тоже недавно ковырялся с данной проблемой.

Мои варианты решения, на основе советов из данной темы:

1) Изменить контрол формы на string и перекрыть lookup. Для этого можно использовать SysLookup::lookupEnum
Проблемы данного решения в том, что проблематично оставить на нем фильтрацию, так как данный контрол будет edit методом и тогда пользовательские фильтры можно будет делать только через отдельную кнопку или поле-фильтр.

2) Самый простой вариант, навесить проверки на выбор значения и выдавать ошибку, если пользователь выбрал неподходящий элемент enum.

3) Если же все таки необходимо скрыть значения enum при выборе, можно посмотреть, как реализован класс SalesPurchSummarySumByCtrl и вариант его использования в SalesEditLinesForm.setupSumByControl(). В нем создаются мапы с соответствием index элемента контрола и id enum. И при выборе элемента можно через map посмотреть, какое значение необходимо вписать в итоговую таблицу.
Какие есть проблемы в нем: при повторном установке курсора аксапта, думая, что она привязана к enum, будет пытаться обновить index не из сформированного программно списка, а из enum по названию. И, поэтому, выбор визуально будет "скакать". Но, это только визуально. Если перейти на другую строку, либо выбрать новое значение, то все подставится корректно. Победить это у меня не получилось, так как lookup на FormComboBoxControl не вызывается, а других точек входа - нет. А в стандарте нет такой проблемы, потому что их элемент - последний в списке выбора
Еще, возможно проблема, не тестировал - как отрабатывают modifiedField и validateField на форме, когда мы так подменяем значения. Поэтому, я их перекрыл и переписал, чтоб точно быть уверенным что они вызовутся.
И, данный класс сделан для конкретного enum. Можно написать аналогичный класс под себя, сделав его общим, отвязав от конкретного enum, передавая enumId. Он тогда будет похож на SysFormEnumComboBox, который в теме тоже предлагался, но, SysFormEnumComboBox - у меня не взлетел, поэтому я написал свой
За это сообщение автора поблагодарили: Logger (3), Alucardkds (1).
Теги
ax2012, enum, ограничить

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
DeniZone: Assigning enum value to variable from enum name Blog bot DAX Blogs 0 17.04.2015 23:11
Как получить из элемента enum-а код типа (enum-а)? Romb DAX: База знаний и проекты 12 27.06.2013 16:17
saveenr: More AX SSRS Screencasts and Instructions on Getting an AX Enum into a Report Blog bot DAX Blogs 0 09.12.2010 02:13
Странный баг при расширении Enum DTD DAX: Программирование 1 07.05.2009 18:45
ComboBox и Enum ArturK DAX: Программирование 1 01.03.2004 16:19

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 08:39.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.