![]() |
#1 |
Участник
|
Как из кода сделать запись в DataSource "грязной"?
Есть несложная форма, в которой 2 DataSource и 2 грида соответственно.
Когда в 1-м создается новая запись, основные поля заполняются у меня через initValue(), и пользователь законно может ничего не дописывать в этой записи. После этого пользователь уходит на 2-ой грид. Если он что-то поправил руками в 1-м гриде в новой записи, то уход вызывает validateWrite() / write() - сохранение. Если же он оставил всё, как заполнил initValue(), то запись в 1-м гриде не сохраняется, а надо, чтобы сохранялась, даже если пользователь ничего не поправил в ней. Я не придумал ничего умнее, как звать write() принудительно в конце initValue(), но это не красиво, т.к. запись будет сохраняться всегда, даже если пользователь передумал и вышел по Esc, не уходя на другой грид / другую запись. Как сделать, чтобы после Ctrl-N в 1-м гриде и ухода на 2-й запись в 1-м гриде/DataSource'е сохранялась, даже если пользователь ничего не поправил в ней? Последний раз редактировалось AR®; 22.04.2014 в 18:44. |
|
![]() |
#2 |
Участник
|
|
|
![]() |
#3 |
Участник
|
В Ax2009 использование forceWrite() не помогло.
В одном случае ведет себя, как обычный write(), в другом вообще не приводит к записи в БД. Последний раз редактировалось AR®; 22.04.2014 в 21:45. |
|
![]() |
#4 |
Участник
|
forceWrite(true) надо вызвать после super() в FormDataSource.create().
В initValue() не подходит. |
|
|
За это сообщение автора поблагодарили: Logger (3), S.Kuskov (2), AR® (1). |