|
ReselectRow
|
|||
---|---|---|---|
#18+
В событии itemchanged проверяю подходит ли значение по заданым параметрам если да сохраняю, если нет то хочу возвратить назад старое значение ReselectRow (возвращает 1), но после этого все равно в поля возвращается введенное значение, а не считаное в запросе. Если вывести сообщение messagebox("",this.ReselectRow(Row)) то на экране видно как раз значение считаное в запросе, но после продолжения вновь возвращается нововведенное значение ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2004, 11:34 |
|
ReselectRow
|
|||
---|---|---|---|
#18+
Вобще не красиво или даже запрещено делать такие вещи в событии ItemChanged, т.к. поля принимают значения опосля его выполнения. Исходя из этого все операции по откату надо делать или методом POST или с помощью кодов возврата данного события (см. хелп по этому событию). Для отката всей строки я бы создал UserEvent для текущего DW например ue_rollbackrow(row) [Script] this.object.data.primary.current[row] = this.object.data.primary.original[row] this.setitemstatus( row,0,notmodified!) // это на всякий случай return В событии ItemChanged [Script] if not <условие> then this.post event ue_rollbackrow(row) return 0 end if return 0 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2004, 14:40 |
|
ReselectRow
|
|||
---|---|---|---|
#18+
Спасибо за помощь! Будем поднимать свой уровень. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2004, 15:47 |
|
ReselectRow
|
|||
---|---|---|---|
#18+
А чем не устраивает: F1(Help), ItemChangedItemChanged event: syntax 1 ... Return code choices (specify in a RETURN statement): 0 (Default) Accept the data value 1 Reject the data value and don't allow focus to change 2 Reject the data value but allow the focus to change Или я чего-то не понял? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2004, 11:07 |
|
ReselectRow
|
|||
---|---|---|---|
#18+
2 PaulJB Хуже другое. Постить событие из itemchanged с целью внесения каких-либо изменений может привести к сохранению некорректных значений. Например: позьзователь ввел значение и не переходя на другое поле тут же нажал кнопку ну например Save. пошел выполняться Clicked кнопки. Вызываем перед сохранением AcceptText что приводит к срабатыванию itemchanged. Из itemchanged постится event. он встает в очередь и будет выполнен после отработки clicked, так? т.е. мы продолжаем процесс сохранения со старыми данными, а потом вызывается ваш ue_rollbackrow. Или у Вас там где-то между AcceptText и Update стоит что-то типа Код: plaintext 1. 2.
2 ЧК Для возвращения старого значения ReselectRow использовать не надо, тут PaulJB прав - значение в буфере Original - оттуда его и надо брать если конечно нужно вернуть именно изначальное значение прочитанное из базы. Но выставить его следует обычным SetItem + Return 2 для отказа от значения введенного пользователем. если нужно всего лишь отказаться от введенного значения то достаточно будет Return 2, и никаких SetItem(original) или того хуже ReselectRow. 2 Centner Где-то рядом с Ё-бургом это часом не СТЗ ? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2004, 14:25 |
|
ReselectRow
|
|||
---|---|---|---|
#18+
2 ЗоринАндрей Согласен с Вами. Возможно, в Вашем случае так оно и будет (c POST Event). Вобще я обычно пользуюсь кодами возврата ItemError-a, а Post Event был предложен как вариант для случая, если сложно перевести уже написанный код на вариант с ItemError. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2004, 18:32 |
|
|
start [/forum/topic.php?fid=15&gotonew=1&tid=1339120]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
150ms |
get topic data: |
11ms |
get first new msg: |
6ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
others: | 11ms |
total: | 265ms |
0 / 0 |