![]() |
#1 |
Участник
|
Kashperuk Ivan: SysMultiTableLoookup - dynamic lookups based on multiple tables
Источник: http://kashperuk.blogspot.com/2008/0...c-lookups.html
============== Wow! MSDN for Microsoft Dynamics AX is getting better every day. This is terrific news!! I still remember the days, when all the information was extremely hard to find. It had its own charm though :) Anyway, this topic is really not about MSDN. It is about lookup forms. First of all, for the record: I (and the Best Practices document as well) recommend creating custom lookup forms in AOT instead of dynamically coding them in the overridden lookup methods on controls/datasource fields. But, in reality, this is true only for lookup forms with very large complexity. I won't go into a discussion of why that is the way it is here. :) Now, back to what I was planning to write about: In order to build a lookup form from code, developers use the SysTableLookup class. You can go to MSDN (mentioned above) to read a How-to article on creating a run-time lookup form, as well as take a quick look at the SysTableLookup method descriptions. SysTableLookup class has evolved over the multiple releases, providing more and more flexibility and control to the application developers. I would like to publish another extension to this class, SysMultiTableLookup, which I hope will prove useful to members of the AX community. Short list of features: - Backward compatible, should cover everything that is present in AX 2009 version of SysTableLookup class - Allows including multiple tables into lookups with different join types - Completely based on the Query that you build, no extra parameters (except for the control) are needed to initialize the class - Allows adding aggregated fields to the lookup - Displays fields based on Boolean Enum as check boxes - Allows to specify alternative labels when adding fields to the lookup You can download the project from axaptapedia.com. It has (to some extent) been tested on Axapta 3.0 SP3, AX 4.0 and AX 2009. Also included in the project is a tutorial form, showing 4 examples of dynamic lookups using the new class. After importing the project, make sure to try out the form, and use it for future reference for code examples and other inspiration. Источник: http://kashperuk.blogspot.com/2008/0...c-lookups.html
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору. |
|
![]() |
#2 |
Участник
|
Кто-нибудь посмотрел этот проект?
Очень бы хотелось получить какой-то Feedback по этому поводу. Было бы полезно иметь эту функциональность вместо стандартного класса SysTablelookup? |
|
|
За это сообщение автора поблагодарили: Lemming (3), TasmanianDevil (3). |
![]() |
#3 |
Участник
|
а можешь по-русски рассказать что там?
|
|
![]() |
#4 |
Участник
|
Ну, если вкратце, то:
Класс, который позволяет создать лукап на основании query. То есть query - единственное, что необходимо передать для инициализации. Поддерживает лукап основанный на более одной таблицы (в смысле, что можно сделать лукап с joinа двух или более таблиц, к примеру). При этом поддерживаются разные типы join-ов. Поддерживает работу с лукапами, где нужна всего одна таблица (как обычный SysTableLookup) Небольшие изменения по сравнению со стандартным классом: - Поддерживает вывод агрегированных полей в лукапе (к примеру, лукап из 2 полей - код заказа и кол-во строк в заказе, т.д) - Отображает поля/методы, основанный на типе boolean, как галочки, а не комбо-боксы - Позволяет сразу указать метку для поля грида (вместо указания этого отдельно) В проекте, на самом деле, есть форма tutorial_, которая показывает различные варианты применения класса. Замечу, что я "пропагандирую" создание новых лукап форм в АОТ вместо динамического. Но, часто - это более простой/быстрый вариант... Вот. Где-то так. Хотелось бы, чтобы люди попробовали именно |
|
|
За это сообщение автора поблагодарили: mazzy (2), belugin (3), oip (6). |
![]() |
#5 |
Участник
|
Скачал, посмотрел пример, выглядит интересно! Кстати смотрел под DAX SP3, очень хорошо, что класс целых три версии поддерживает. Пока что практической необходимости воспользоваться им не возникало, но при случае обязательно попробую.
|
|
![]() |
#6 |
Мрачный тип
|
Поля из при-join'енных таблиц в lookup - это весьма и весьма хорошо.
__________________
Мы летаем, кружимся, нагоняем ужасы ... |
|
![]() |
#7 |
Участник
|
Вопрос к тем, кто все же попробовал:
Гипотетически, было ли бы полезным возможность возвращать значение(я) помимо(вместо) основного лукап значения? Примеры: - Поле с типом RecId, но при выборе отображаются нормальные поля (RecId не показывается), но при выборе подставляется в запись именно RecId - При выборе записи вставляется выбранное значение (как обычно), но при этом заполняются и другие (возможно невидимые) поля этой записи, на основании записи, выбранной в лукапе? (Подобный пример, реализованный иначе, можно наблюдать в поле Контактное лицо, когда выбираем Имя, но при этом также заполняется код контактного лица) - Ваш вариант |
|
![]() |
#8 |
Axapta
|
Цитата:
Сообщение от kashperuk
![]() Гипотетически, было ли бы полезным возможность возвращать значение(я) помимо(вместо) основного лукап значения?
... - При выборе записи вставляется выбранное значение (как обычно), но при этом заполняются и другие (возможно невидимые) поля этой записи, на основании записи, выбранной в лукапе?
__________________
С уважением, Олег. |
|
![]() |
#9 |
Участник
|
Передумал - лучше использовать вот этот подход:
Опять про lookup |
|
![]() |
#10 |
Axapta
|
Цитата:
ненавижу сопровождать такой код, лучше искать другие пути.
![]()
__________________
С уважением, Олег. |
|
![]() |
#11 |
Участник
|
Нужно еще вот эту фразу процитировать:
Цитата:
Не забывай, что пользователь может не только выбрать значение из лукапа, но и ввести вручную, скопировать из буфера и т.п.
|
|
![]() |
#12 |
Axapta
|
Я об этом помню. В таких случаях надо запрещать "вводить вручную, скопировать из буфера". Минусы такого решения тоже отлично понимаю.
__________________
С уважением, Олег. |
|
Теги |
lookup, systablelookup, ax2009 |
|
|