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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 25.06.2008, 20:02   #1  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5788 (200) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
edit-методы и validateWrite() на DataSource
Исходная ситуация: есть таблица (не временная, хотя это не важно), есть форма с grid'ом по этой таблице, и на grid'е есть некоторые поля, представленные edit-методами и к записи таблицы не имеющие непосредственного отношения, т.е. значения, меняемые edit-методами, живут исключительно на форме и к таблице в БД никак не относятся. Также есть перекрытый на DS метод validateWrite(), который проверяет какие-то взаимосвязи между данными, введенными через эти edit-методы.
Вариант 1) ни одного поля в grid'е не меняется, нажимается Ctrl-S - метод DS.validateWrite() при этом вызывается.
Вариант 2) ни одного табличного поля в grid'е не меняется, но при этом меняются значения полей, представленные edit-методами. Вместо Ctrl-S происходит переход на другую запись с помощью клавиш «стрелка вверх», «стрелка вниз». Метод DS.validateWrite() при этом не вызывается.
Внимание, вопрос: правильно ли это? Вопрос 2: если это правильно, то как мне проверять корректность введенных данных для комбинации edit-полей, если поля самой записи не менялись? Потому что ни validateWrite(), ни write() в такой ситуации не вызывается
Проверялось на AX 3.0 KR3
Старый 25.06.2008, 20:15   #2  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5788 (200) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Предварительно остановился на методах prev()/prevPage(), next(), nextPage()
Старый 26.06.2008, 11:40   #3  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5788 (200) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Окончательно остановился на методе DataSource.leave()
Старый 30.06.2008, 10:33   #4  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
А если вызвать DataSource.forceWrite(true) из edit-методов, validateWrite() тоже не вызывается?
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
За это сообщение автора поблагодарили: gl00mie (5).
Старый 30.06.2008, 14:46   #5  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5788 (200) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
В моем случае дергать validateWrite() в вызове каждого edit-метода не совсем корректно. К примеру, ставится некий крыж, в результате чего определенное поле становится обязательным к заполнению. Кричать, что оно не заполнено, сразу после установки крыжа (опосредованно дергая validateWrite() в edit-методе) imho некорректно - об этом надо заявить лишь в момент, когда по тем или иным причинам сохраняется запись.
Старый 30.06.2008, 16:47   #6  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Так я и не предлагаю validateWrite() вызывать из каждого edit-метода. Просто в вашем edit-методе поставьте forceWrite(true), если set = true. Тогда, когда придет время сохранять запись (а это, кстати, не только leave(), но и, например, Ctrl+S или нажатие на кнопку, у которой SaveRecord = Yes), вызовется validateWrite() и write(), даже если поля записи не были изменены.

Например:
X++:
edit String30 myEditMethod(boolean _set, MyTable _myTable, String30 _value)
{
    if (_set) {
        ...
        MyTable_ds.forceWrite(true);
    }

    return ...;
}
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me

Последний раз редактировалось Maxim Gorbunov; 30.06.2008 в 16:51.
За это сообщение автора поблагодарили: aidsua (1).
Старый 30.06.2008, 17:50   #7  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5788 (200) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от Maxim Gorbunov Посмотреть сообщение
Так я и не предлагаю validateWrite() вызывать из каждого edit-метода. Просто в вашем edit-методе поставьте forceWrite(true), если set = true.
Да, точно, что-то я напутал С forceWrite(true) все заработало, как надо
Теги
ax3.0

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Solutions Monkey: EP Page Life Cycle Blog bot DAX Blogs 0 18.02.2009 08:05
Заполнение DataSource из постоянной и временной таблиц m_ax DAX: Программирование 2 21.06.2007 13:08
Зачем нужны display и edit методы Андре DAX: Программирование 4 15.08.2002 13:24
edit и display методы Maxim Gorbunov DAX: База знаний и проекты 4 15.01.2002 12:58
Методы, использующие модификатор edit. sguryev DAX: База знаний и проекты 0 18.12.2001 15:00

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 21:03.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.