15.08.2012, 16:21 | #1 |
Участник
|
Вывод display-массива на форму в Grid
Все привет
Вот понадобилось сделать Subj, судя по документации Use a display Method on a Form or Report а именно вот этот пункт: ... If the display method returns an array, set ArrayIndex to 0 to indicate that all array elements are to be shown in the control. If, for example, you set it to 2, only array element number two is shown. ... это возможно. Мне нужно массив, заполненный в дисплей-методе, вывести на грид Я долго мучился, но что-то не получилось... Никто не пробовал или может подскажет кто, как это реализовать. Очень не хочется писать отдельный метод для каждого элемента массива, если, судя по документации, можно как-то вывести весь массив. |
|
15.08.2012, 17:00 | #2 |
Administrator
|
Сделайте дисплей-метод на таблице, который возвращает массив, включите его в группу полей и вытащите эту группу полей на форму.
Свойство ArrayIndex для контролов не работает.
__________________
Возможно сделать все. Вопрос времени |
|
16.08.2012, 11:39 | #3 |
Участник
|
Нет, это не работает, по крайней мере в 4-ке. Я это попробовал первым делом.
Не смотря на то, что метод имеет расширенный тип как массив из 4-х элементов типа int, X++: display RHRMChildAges cmpRateValueFromHRMParm(EmplTable _emplTable) { RHRMChildAges ret[4]; ..... return ret; } А вот поле DIMENSION в группе отображается как несколько элементов Последний раз редактировалось VBF; 16.08.2012 в 11:43. |
|
16.08.2012, 11:47 | #4 |
Участник
|
Надо указывать именно возвращаемый тип массив
EDT RHRMChildAges не является массивом.
__________________
Axapta v.3.0 sp5 kr2 |
|
16.08.2012, 16:43 | #5 |
Участник
|
Согласен
Если можно, поподробнее, какого типа должен быть метод. Явного типа, описывающего массив в Аксе не существует. Имеется ввиду контейнер? Что нужно указать в описании метода, можно пример? |
|
16.08.2012, 17:05 | #6 |
Участник
|
Цитата:
У EDT есть ветка Array Elements. Добавьте в нее элементы - получите EDT-массив (размерность - кол-во элементов в этой ветке + 1). Смотрите тип Dimension в качестве примера
__________________
Axapta v.3.0 sp5 kr2 |
|
16.08.2012, 17:11 | #7 |
Гость
|
Может это потому, что оно типа массив.
Если в AOT найти EDT Dimension и развернуть в нем узел Array Elements, будут видны элементы массива. Только я сейчас попробовал вывести на первой попавшейся таблице с полем Dimension его же, но как display метод на грид и увидел только первый элемент. X++: display Dimension dimensionasmethod() { return this.Dimension; } |
|
16.08.2012, 17:13 | #8 |
Участник
|
Цитата:
В таком случае EDT RHRMChildAges - массив. Все оформлено как нужно X++: Microsoft Dynamics Integer: RHRMChildAges USERTYPEVERSION 6 USERTYPE #RHRMChildAges INT PROPERTIES Name #RHRMChildAges Label #1 ArrayLength #4 Extends #RHRMChildAge Alignment #Right ENDPROPERTIES TYPEELEMENTS TYPEELEMENT PROPERTIES Index #2 Label #2 ENDPROPERTIES TYPEREFERENCES ENDTYPEREFERENCES ENDTYPEELEMENT TYPEELEMENT PROPERTIES Index #3 Label #3 ENDPROPERTIES TYPEREFERENCES ENDTYPEREFERENCES ENDTYPEELEMENT TYPEELEMENT PROPERTIES Index #4 Label # ENDPROPERTIES TYPEREFERENCES ENDTYPEREFERENCES ENDTYPEELEMENT ENDTYPEELEMENTS TYPEREFERENCES ENDTYPEREFERENCES ENDUSERTYPE Последний раз редактировалось VBF; 16.08.2012 в 18:32. |
|
16.08.2012, 17:25 | #9 |
Участник
|
Вот и у меня закралось подозрение, что это работает только если выводить на грид массив из таблицы, а через метод не работает.
|
|
16.08.2012, 20:58 | #10 |
Administrator
|
Хе... я ж перед тем как ответить специально проверил.
По факту - да, получается не работает. А у меня заработало, потому что я создал метод dimension() и поле Dimension. И когда я перетаскивал метод в группу полей - я не посмотрел, что у меня метод в группе полей чудесным образом "преобразовался" в поле. И поэтому все отработало.
__________________
Возможно сделать все. Вопрос времени |
|
|
За это сообщение автора поблагодарили: Cathome (1). |
17.08.2012, 08:12 | #11 |
Участник
|
На самом деле возвращение масива (даже EDT-эшного) из метода в аксапте как-то недореализовано.
Например, нельзя использовать вот такой код: X++: sysDim dim1 = myTable.Dimension()[1]; |
|
21.08.2012, 17:23 | #12 |
Участник
|
X++: display sysdim displayMy() { return myTable.MyDimension[1]; } |
|
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|