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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 30.08.2002, 10:12   #1  
Yuri Safronov is offline
Yuri Safronov
Участник
 
140 / 55 (2) ++++
Регистрация: 21.08.2002
Адрес: Москва
? Как мне обновить Grid расположенный на другой форме?
Допустим у на есть первая форма с заказами расположенными в Grid-е.
И есть кнопка «Новый заказ». По этой кнопке вызывается вторая форма в которой заполняются параметры нового заказа. Потом по нажатию на кнопку второй формы «Применить» она (то есть вторая форма) должна закрываться, а Grid на первой форме должен обновится (то есть должны появится данные, которые только, что вводились во второй форме). Как мне обновить Grid расположенный на другой форме?
__________________
yurisafronov@mail.ru
skype: y.safronov
Старый 30.08.2002, 11:03   #2  
SSA is offline
SSA
Участник
 
20 / 12 (1) ++
Регистрация: 21.06.2002
Адрес: Балашиха
Привет.

1. В качестве параметра в caller передай element первой формы и после этого из второй формы сможешь запускать любой метод первой формы (element.args().caller().method())
2. Метод clicked() кнопки на первой форме
PHP код:
Args            parameters = new Args();
FormRun         FormRun;
;
super();
parameters.caller(element);
parameters.name(formstr(<Имя формы>));
FormRun classFactory.FormRunClass(parameters);
FormRun.init();
FormRun.run();
FormRun.wait();

// После закрытия формы 2
salesTable_ds.ExecuteQuery(); 
__________________
Сергей
За это сообщение автора поблагодарили: ChD (0), alicedr (1).
Старый 31.08.2002, 23:22   #3  
stranger is offline
stranger
Участник
 
31 / 11 (1) +
Регистрация: 31.08.2002
Хотелось бы отметить, что существует возможность повесить на кнопку пункт меню, который будет открывать нужную Вам форму. А в свойствах кнопки, можно прописать DataSource - SalesTable.

И потом, такой сложный код метода clicked() на кнопке превращается в следующий :

clicked()
{
super();
SalesTable_ds.executeQuery();
}

так все просто


вооот....
За это сообщение автора поблагодарили: NikolayS (1).
Старый 31.08.2002, 23:45   #4  
Роман Кошелев is offline
Роман Кошелев
Продавец игрушек
Аватар для Роман Кошелев
 
433 / 73 (3) ++++
Регистрация: 22.11.2001
Адрес: Москва
Проблема от того, что в аксапте нет событий, на которые можно было бы подписываться. И необновление грида - самое проитвное её следствие.
__________________
С уважением, Роман Кошелев.
Старый 02.09.2002, 10:04   #5  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Роман, это палка о двух концах.

Автоматическое обновление потенциально очень опасная весчь. И очень опасная.
В 1С вот формы сами обновляются. И там такого наворотили на это свойство.

Насчет подписки. Согласен, что тригеров нет. Но можно извратится через таймер.
Старый 02.09.2002, 13:55   #6  
SSA is offline
SSA
Участник
 
20 / 12 (1) ++
Регистрация: 21.06.2002
Адрес: Балашиха
Цитата:
Изначально опубликовано stranger
Хотелось бы отметить, что существует возможность повесить на кнопку пункт меню, который будет открывать нужную Вам форму.
Полностью согласен. т.к. при открытии второй формы по MenuItemButton в args.caller() будет передан element первой формы.

С методом clicked я погорячился
__________________
Сергей
Старый 12.09.2002, 08:56   #7  
Yuri Safronov is offline
Yuri Safronov
Участник
 
140 / 55 (2) ++++
Регистрация: 21.08.2002
Адрес: Москва
Цитата:
Изначально опубликовано stranger
Хотелось бы отметить, что существует возможность повесить на кнопку пункт меню, который будет открывать нужную Вам форму. А в свойствах кнопки, можно прописать DataSource - SalesTable.

И потом, такой сложный код метода clicked() на кнопке превращается в следующий :

clicked()
{
super();
SalesTable_ds.executeQuery();
}

так все просто

вооот....
В заголовке появляется симол - (дефис), как от него избавится?
__________________
yurisafronov@mail.ru
skype: y.safronov
Старый 12.09.2002, 09:34   #8  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
1. Передается курсор из вызывающей формы (через menuItem или args)
2. В вызванной форме после нужных операций
делают salesTable.dataSource().research(), где salesTable = переданный курсор
Старый 21.01.2013, 15:25   #9  
alicedr is offline
alicedr
Участник
 
175 / 43 (2) +++
Регистрация: 06.07.2012
Адрес: Канада
:(
Аналогичная задача.
Из формы 1 вызывается форма 2. По нажатию на форме 2 кнопки выполняется класс, после чего необходимо отжать чекбокс в гриде на форме 1.
Делаю:
в форма2.Init()
X++:
      CallerForm=element.args().caller(); //где CallerForm обьявлен в ClassDeclaration формы:
       //Form            CallerForm;
в форма2.дизайн.кнопка.Clicked()
X++:
void clicked()
{
    FormCheckBoxControl fieldCopy;
    ;
    super();
  //  fieldCopy = CallerForm.design().controlName(identifierstr(Copy));  //выдает ошибку компилятора
                                                        // "Класс FormBuildDesign не содержит эту функцию"
    fieldCopy = CallerForm.design().control(identifierstr(Copy));      // выдает ошибку времени выполнения "Обьект не инициализирован"
                                                        // на следующей строчке
    fieldCopy.value(false);
}
Подозреваю, что выбраны неверные типы данных.

Что неверно? Или как эту задачу выполнить правильнее?
Старый 21.01.2013, 15:49   #10  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от alicedr Посмотреть сообщение
Подозреваю, что выбраны неверные типы данных.

Что неверно? Или как эту задачу выполнить правильнее?
Запущенная форма - это FormRun, а не Form
Старый 21.01.2013, 16:11   #11  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
Как вариант :
В первой форме делаете метод:
X++:
void chkMove(NoYes _var = NoYes::No)
{
    fieldCopy.value(_var);
}
Во второй форме :
X++:
public class FormRun extends ObjectRun
{
    Object   callerForm;
}
X++:
CallerForm=element.args().caller(); //где CallerForm обьявлен в ClassDeclaration формы:
       //Object CallerForm; - вот это важно
и
X++:
void clicked()
{
    super();
    callerForm.chkMove(NoYes::No);
}
__________________
-Ты в гномиков веришь?
-Нет.
-А они в тебя верят, смотри, не подведи их.

Последний раз редактировалось Pustik; 21.01.2013 в 16:13.
Старый 21.01.2013, 16:18   #12  
alicedr is offline
alicedr
Участник
 
175 / 43 (2) +++
Регистрация: 06.07.2012
Адрес: Канада
Цитата:
Сообщение от belugin Посмотреть сообщение
Запущенная форма - это FormRun, а не Form
Отлично! Теперь
X++:
fieldCopy = CallerForm.design().controlName(identifierstr(Copy));
перестал ругаться, хотя чекбокс так и остается отмеченным. Не помогает ни F5, ни
X++:
CallerForm.dataSource().research();
Играет какую-то роль, что чекбокс-это поле, описанное edit-методом?
Старый 21.01.2013, 16:25   #13  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
873 / 649 (23) +++++++
Регистрация: 14.10.2004
Цитата:
Сообщение от alicedr Посмотреть сообщение
перестал ругаться, хотя чекбокс так и остается отмеченным. Не помогает ни F5, ни
X++:
CallerForm.dataSource().research();
Играет какую-то роль, что чекбокс-это поле, описанное edit-методом?
Добавьте еще такую строчку:
X++:
callerForm.redraw();
Старый 21.01.2013, 16:32   #14  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
не заметил, что это у вас на гриде, тогда в первой форме вот так :
X++:
void chkMove(NoYes _var = NoYes::No)
{
    MyTable_ds.marked(_var ,MyTable ); // это edit метод
    MyTable_ds.reread();
    MyTable_ds.refresh();
}
__________________
-Ты в гномиков веришь?
-Нет.
-А они в тебя верят, смотри, не подведи их.
Старый 21.01.2013, 16:38   #15  
alicedr is offline
alicedr
Участник
 
175 / 43 (2) +++
Регистрация: 06.07.2012
Адрес: Канада
Все равно чекбокс отмечен. Вероятно из-за того, что его значение хранится в переменной mark формы 1. К переменным как-то можно добраться? Или придется заводить невидимый контрол на форме1, который будет изменять переменную mark?
Старый 21.01.2013, 16:45   #16  
alicedr is offline
alicedr
Участник
 
175 / 43 (2) +++
Регистрация: 06.07.2012
Адрес: Канада
Получилось вторым способом(через доп. контрол на форме).
Ace of Database, Pustik, спасибо!!!
Старый 21.01.2013, 16:48   #17  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
873 / 649 (23) +++++++
Регистрация: 14.10.2004
Тогда вместо обращения к контролу, вызовите edit-метод напрямую.

X++:
Object obj;
....
obj = callerForm;
obj.myEditMethod(true, false);
callerForm.redraw();
Старый 22.01.2013, 14:18   #18  
DmitryK is offline
DmitryK
Участник
 
179 / 76 (3) ++++
Регистрация: 22.12.2011
Предложу работающий но не стандартный метод...
winapi::sendmessage(callerform.hwnd(), WM_KEYDOWN, VK_F5, 0)
:O)
Для разнообразия.

C уважением, Дмитрий.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как быстро обновить содержимое HTML Document на форме? Dronas DAX: Программирование 2 12.11.2021 11:28
Проверка значения CheckBox объявленного на форме в Grid mallard DAX: Программирование 3 03.05.2007 16:49
Как из формы Form2 обновить записи на форме Form1? Hidden DAX: Функционал 15 24.05.2005 11:53
Объединить несколько полей таблицы в одном поле Grid-а на форме? storer DAX: Программирование 2 12.11.2003 14:08
Поиск в Grid по полю из другой таблицы Dron AKA andy DAX: Программирование 9 01.08.2002 16:36

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

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

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