![]() |
Почему событие itemEditEnd в DataGrid посылается 2 раза?
Почему событие itemEditEnd в DataGrid при окончании редактирования ячейки посылается 2 раза? Причем объект event в обоих случаях совершенно одинаков.
Нужно при окончании редактирования ячейки сохранить результат в базе, в итоге происходит 2 запроса к базе, не оптимально. Есть способ отлавливать это событие только один раз? |
там нужно проверять при наступлении
Код:
if (event.reason == DataGridEventReason.OTHER || event.reason == DataGridEventReason.CANCELLED)CANCELLED - редактирование отменено (нажат Esc) NEW_COLUMN - по окончанию редактирования фокус ушел на соседнюю колонку этого ряда. NEW_ROW - фокус ушел на новый ряд этой колонки. OTHER - То есть просто потерян фокус, произошло скроллирование или был переход в состояние, в котором редактирование не допущено. Значит, что за одно редактирование у нас событие может случиться 2 раза: при NEW_COLUMN или NEW_ROW и OTHER. |
Да это я знаю, но оба события имеют причину OTHER (они вообще абсолютно одинаковы)
Просто если пользователь изменил данные и ткнул мышью в любое место, программа должна сохранить значение. Поэтому у меня стоит только: Код:
if (event.reason == DataGridEventReason.CANCELLED) { |
Если я сохраню результат и вызову event.stopImmediatePropagation(), событие повторится?
Код:
if (event.reason == DataGridEventReason.CANCELLED) { |
насколько я понял, да. У решил эту ситуацию вышеприведенным способом. У меня уходило 2 события при нажатии ENTER после редактирования - одно связано с переходом на новую строку/столбец, другое - с потерей фокуса (OTHER). Почему у тебя 2 раза получается OTHER?
|
Похоже что событие отсылается дважды, если в код поставить Alert.show(). Именно в момент вызова Alert.show() вызывается это же сообщение еще раз, прирывая выполнение обработчика текущего события. Вызов Alert.show() при не завершенной обработке события itemEditEnd, провоцирует срабатывание этого же события еще раз.
Если я ставлю trace(event.reason), то событие отрабатывает один раз. Интересно что еще может спровацировать повторную отправку события? |
| Часовой пояс GMT +4, время: 14:57. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.