|
22.11.2018, 15:31 | #1 |
Участник
|
D365 Dynamic Grid with query as DS through code
Задача сделать форму в которой будет список таблиц из определенной группы, по нажатию кнопки отобразить в Grid все поля и строки выбранной пользователем таблицы. Заранее список таблиц неизвестен, будет формироваться при запуске формы.
Вопрос как привязать к Grid query созданный в коде и отобразить все его поля? |
|
22.11.2018, 17:51 | #2 |
Участник
|
Попытался использовать Common как DataSource прикрепленный к Grid, и это не работает т.к. после инициализации формы не получается сменить .table() этого DataSource.
|
|
22.11.2018, 19:20 | #3 |
северный Будда
|
Сделайте Union View по всем нужным таблицам, при открытии формы - фильтруйтесь по нужной TableId
__________________
С уважением, Вячеслав |
|
22.11.2018, 21:35 | #4 |
Участник
|
не совсем прям 100% то, что ты ищешь, но думаю, общий подход уловишь https://alexvoy.blogspot.com/2012/01...rsion-for.html
вся штуковина генерится сама из кода одного класса
__________________
Felix nihil admirari |
|
23.11.2018, 13:33 | #5 |
Мрачный тип
|
В старых версиях в клиентском приложении подобного рода игрища производились только в новом экземпляре формы, где в build-time инициализировался набор источников данных и генерировались контролы с привязкой к созданным ранее источникам данных - на у же созданной и запущенной форме такое не прокатывало.
Если говорить про WEB-интерфейс - теоретически такое сделать можно, если WEB-форма делается мульти-фреймовой и грид (на самом деле отдельная форма с одним только гридов) выделены в отдельный фрейм, наполнение которого зависит от входных параметров. Тогда, шарахаясь по неким настройкам в основном фрейме, можно вызывать по необходимости обновление дочернего фрейма с гридом, который при будет строиться в соответствии с переданными параметрами. Если D365FO поддерживает такие композитные формы - получится. Если нет - новая вкладка и новая форма, как и было прежде.
__________________
Мы летаем, кружимся, нагоняем ужасы ... |
|
26.11.2018, 10:06 | #6 |
Участник
|
Цитата:
Сообщение от TasmanianDevil
В старых версиях в клиентском приложении подобного рода игрища производились только в новом экземпляре формы, где в build-time инициализировался набор источников данных и генерировались контролы с привязкой к созданным ранее источникам данных - на у же созданной и запущенной форме такое не прокатывало.
Если говорить про WEB-интерфейс - теоретически такое сделать можно, если WEB-форма делается мульти-фреймовой и грид (на самом деле отдельная форма с одним только гридов) выделены в отдельный фрейм, наполнение которого зависит от входных параметров. Тогда, шарахаясь по неким настройкам в основном фрейме, можно вызывать по необходимости обновление дочернего фрейма с гридом, который при будет строиться в соответствии с переданными параметрами. Если D365FO поддерживает такие композитные формы - получится. Если нет - новая вкладка и новая форма, как и было прежде. |
|
27.11.2018, 11:42 | #7 |
Участник
|
Вопрос решен, может кому пригодится:
Реализовано с помощью 2х форм: Первая форма - диалог со списком таблиц Вторая принимает в аргументе имя таблицы, имеет один Datasource типа Common, и Grid привязанный к этому источнику. В init() формы, до вызова super() меняем таблицу Datasource на выбранную в диалоге: X++: this.form().dataSource(1).table(tableName2id(this.args().parm())); X++: ...super(); FormDataSource fds = this.dataSource(1); DictTable dt = new SysDictTable(fds.table()); FieldId fieldId = dt.fieldNext(0); DictField dictField; fieldId = dt.fieldNext(0); while (fieldId) { ParametersGrid.addDataField(fds.id(), fieldId); fieldId = dt.fieldNext(fieldId); } |
|
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|