25.06.2008, 20:02 | #1 |
Участник
|
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 |
Участник
|
Предварительно остановился на методах prev()/prevPage(), next(), nextPage()
|
|
26.06.2008, 11:40 | #3 |
Участник
|
Окончательно остановился на методе DataSource.leave()
|
|
30.06.2008, 10:33 | #4 |
Administrator
|
А если вызвать 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 |
Участник
|
В моем случае дергать validateWrite() в вызове каждого edit-метода не совсем корректно. К примеру, ставится некий крыж, в результате чего определенное поле становится обязательным к заполнению. Кричать, что оно не заполнено, сразу после установки крыжа (опосредованно дергая validateWrite() в edit-методе) imho некорректно - об этом надо заявить лишь в момент, когда по тем или иным причинам сохраняется запись.
|
|
30.06.2008, 16:47 | #6 |
Administrator
|
Так я и не предлагаю 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 |
Участник
|
|
|