22.04.2014, 18:40 | #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. |
|
22.04.2014, 19:09 | #2 |
Участник
|
|
|
22.04.2014, 21:43 | #3 |
Участник
|
В Ax2009 использование forceWrite() не помогло.
В одном случае ведет себя, как обычный write(), в другом вообще не приводит к записи в БД. Последний раз редактировалось AR®; 22.04.2014 в 21:45. |
|
25.04.2014, 12:07 | #4 |
Участник
|
forceWrite(true) надо вызвать после super() в FormDataSource.create().
В initValue() не подходит. |
|
|
За это сообщение автора поблагодарили: Logger (3), S.Kuskov (2), AR® (1). |