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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 22.11.2018, 15:31   #1  
syl is offline
syl
Участник
Аватар для syl
 
236 / 21 (1) +++
Регистрация: 10.06.2015
Адрес: Киев
D365 Dynamic Grid with query as DS through code
Задача сделать форму в которой будет список таблиц из определенной группы, по нажатию кнопки отобразить в Grid все поля и строки выбранной пользователем таблицы. Заранее список таблиц неизвестен, будет формироваться при запуске формы.

Вопрос как привязать к Grid query созданный в коде и отобразить все его поля?
Старый 22.11.2018, 17:51   #2  
syl is offline
syl
Участник
Аватар для syl
 
236 / 21 (1) +++
Регистрация: 10.06.2015
Адрес: Киев
Попытался использовать Common как DataSource прикрепленный к Grid, и это не работает т.к. после инициализации формы не получается сменить .table() этого DataSource.
Старый 22.11.2018, 19:20   #3  
pitersky is offline
pitersky
северный Будда
Аватар для pitersky
Ex AND Project
Соотечественники
 
1,510 / 435 (18) +++++++
Регистрация: 26.09.2007
Адрес: Солнечная система
Сделайте Union View по всем нужным таблицам, при открытии формы - фильтруйтесь по нужной TableId
__________________
С уважением,
Вячеслав
Старый 22.11.2018, 21:35   #4  
wojzeh is offline
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
674 / 512 (19) +++++++
Регистрация: 27.04.2006
Адрес: Montreal
не совсем прям 100% то, что ты ищешь, но думаю, общий подход уловишь https://alexvoy.blogspot.com/2012/01...rsion-for.html

вся штуковина генерится сама из кода одного класса

__________________
Felix nihil admirari
Старый 23.11.2018, 13:33   #5  
TasmanianDevil is offline
TasmanianDevil
Мрачный тип
Аватар для TasmanianDevil
Злыдни
 
886 / 389 (14) ++++++
Регистрация: 24.01.2005
Адрес: Томск
В старых версиях в клиентском приложении подобного рода игрища производились только в новом экземпляре формы, где в build-time инициализировался набор источников данных и генерировались контролы с привязкой к созданным ранее источникам данных - на у же созданной и запущенной форме такое не прокатывало.

Если говорить про WEB-интерфейс - теоретически такое сделать можно, если WEB-форма делается мульти-фреймовой и грид (на самом деле отдельная форма с одним только гридов) выделены в отдельный фрейм, наполнение которого зависит от входных параметров. Тогда, шарахаясь по неким настройкам в основном фрейме, можно вызывать по необходимости обновление дочернего фрейма с гридом, который при будет строиться в соответствии с переданными параметрами.

Если D365FO поддерживает такие композитные формы - получится. Если нет - новая вкладка и новая форма, как и было прежде.
__________________
Мы летаем, кружимся, нагоняем ужасы ...
Старый 26.11.2018, 10:06   #6  
Dreadlock is offline
Dreadlock
Участник
Аватар для Dreadlock
 
298 / 224 (8) ++++++
Регистрация: 07.05.2009
Адрес: Москва
Цитата:
Сообщение от TasmanianDevil Посмотреть сообщение
В старых версиях в клиентском приложении подобного рода игрища производились только в новом экземпляре формы, где в build-time инициализировался набор источников данных и генерировались контролы с привязкой к созданным ранее источникам данных - на у же созданной и запущенной форме такое не прокатывало.

Если говорить про WEB-интерфейс - теоретически такое сделать можно, если WEB-форма делается мульти-фреймовой и грид (на самом деле отдельная форма с одним только гридов) выделены в отдельный фрейм, наполнение которого зависит от входных параметров. Тогда, шарахаясь по неким настройкам в основном фрейме, можно вызывать по необходимости обновление дочернего фрейма с гридом, который при будет строиться в соответствии с переданными параметрами.

Если D365FO поддерживает такие композитные формы - получится. Если нет - новая вкладка и новая форма, как и было прежде.
Вроде workspace так работает. Или я ошибаюсь?
Старый 27.11.2018, 11:42   #7  
syl is offline
syl
Участник
Аватар для syl
 
236 / 21 (1) +++
Регистрация: 10.06.2015
Адрес: Киев
Вопрос решен, может кому пригодится:

Реализовано с помощью 2х форм:
Первая форма - диалог со списком таблиц
Вторая принимает в аргументе имя таблицы, имеет один Datasource типа Common, и Grid привязанный к этому источнику.

В init() формы, до вызова super() меняем таблицу Datasource на выбранную в диалоге:
X++:
this.form().dataSource(1).table(tableName2id(this.args().parm()));
Затем заполняем Grid полями этой таблицы
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);
}
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
stoneridgesoftware: How to use a Query Range Status on a Filterable Grid Field in Dynamics AX Blog bot DAX Blogs 0 06.10.2017 02:21
vasantharivali: Dynamic Query Using Aggregative Functions and Joins Blog bot DAX Blogs 0 17.11.2012 11:12
axaptacorner: How to create Query in AX 2012 through X ++ code Blog bot DAX Blogs 0 20.09.2012 17:11
Вопрос про Demand Planner slava09 DAX: Функционал 4 25.09.2006 11:43
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 23:56.