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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 05.06.2006, 19:20   #11  
Garic is offline
Garic
NavAx
Аватар для Garic
NavAx Club
 
393 / 63 (3) ++++
Регистрация: 23.07.2002
Адрес: Москва
Да, я некорректно ответил. Нельзя после init-а изменять датасорсы на форме. Т.е. даже если что-то и заджойнить, то отобразить эти данные нельзя.

Это можно в принципе обойти - если открыть\закрыть форму.
Вот пример - код из класса, который вызван из init формы, но до вызова super().
Проверяется - есть ли в форме нужный датасорс - если нету - добавляется и форма переоткрывается.

Код:
// Метод вызывается из init формы до вызова super()
protected void addDataSources()
{
    Args                    args;
    Form                    formNew;
    FormRun                 formRunNew;
    FormBuildDataSource     formBuildDataSource;
    int                     i;
    ;
    for (i = 1; i <= formRun.form().dataSourceCount(); i++)
    {
        formBuildDataSource = formRun.form().dataSource(i);
        // Ищем датасорсы - добавлены ли они уже в форму (добавляются динамически)
        if (formBuildDataSource.name() == #SetupGroupingDS)
            buildSetupGroupingDS = formBuildDataSource;
    }
    if (useGrouping && !buildSetupGroupingDS)
        restartForm = true;
    if (restartForm) // Не добавлены - придётся перезагружать форму
    {
        formNew = new Form(formRun.name());
        // Добавляем датасорсы
        if (useGrouping)
        {
            formBuildDataSource = formNew.addDataSource(#SetupGroupingDS);
            formBuildDataSource.table(tablenum(TmpSysQuery));
            formBuildDataSource.index(indexnum(TmpSysQuery, SortOrderIdx));
            formBuildDataSource.allowCreate(false);
            formBuildDataSource.allowDelete(false);
        }
        // Теперь можно запустить новую форму - датасорсы добавлены
        args = formRun.args();
        args.object(formNew);
        formRunNew         = classFactory.formRunClass(args);
        formRunNew.init();
        formRunNew.run();
        formRunNew.wait();
        // Не забыть закрыть старую форму если параметр restartForm = true 
        // (это надо сделать после super() в init формы)
    }
}
__________________
С уважением, Игорь Ласийчук.
Теги
lookup, query, программно

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
изменение LookUp поле на форме SHiSHok DAX: Программирование 15 25.02.2013 13:26
Динамическое изменение query для отчета Peppi DAX: Программирование 1 25.11.2008 06:59
Как в форме CustTrans через query отобрать записи у которых AmountCur != 0 ( когда в QueryBuildRange ставишь value(strFmt('!0')); - не работает!) rkorchagin DAX: Программирование 12 02.04.2007 17:58
Как вызвать изменение Query в DS1 не вызывая метод executeQuery? Morpheus DAX: Программирование 5 17.10.2006 10:26
Изменение Query у некоторых пользователей Владимир Максимов DAX: Программирование 9 23.09.2005 14:57

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

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

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