![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Регистрация: Apr 2008
Сообщений: 5
|
Почему событие itemEditEnd в DataGrid при окончании редактирования ячейки посылается 2 раза? Причем объект event в обоих случаях совершенно одинаков.
Нужно при окончании редактирования ячейки сохранить результат в базе, в итоге происходит 2 запроса к базе, не оптимально. Есть способ отлавливать это событие только один раз? |
|
|||||
|
Контрибьютор базы знаний по Флекс
Регистрация: Aug 2005
Сообщений: 690
|
там нужно проверять при наступлении
if (event.reason == DataGridEventReason.OTHER || event.reason == DataGridEventReason.CANCELLED)
{
return;
}
CANCELLED - редактирование отменено (нажат Esc) NEW_COLUMN - по окончанию редактирования фокус ушел на соседнюю колонку этого ряда. NEW_ROW - фокус ушел на новый ряд этой колонки. OTHER - То есть просто потерян фокус, произошло скроллирование или был переход в состояние, в котором редактирование не допущено. Значит, что за одно редактирование у нас событие может случиться 2 раза: при NEW_COLUMN или NEW_ROW и OTHER.
__________________
Flex 2 и Co Последний раз редактировалось baron27; 03.04.2008 в 14:44. |
|
|||||
|
Регистрация: Apr 2008
Сообщений: 5
|
Да это я знаю, но оба события имеют причину OTHER (они вообще абсолютно одинаковы)
Просто если пользователь изменил данные и ткнул мышью в любое место, программа должна сохранить значение. Поэтому у меня стоит только: В итоге посылаются два абсолютно одинаковых события. Почему? |
|
|||||
|
Регистрация: Apr 2008
Сообщений: 5
|
Если я сохраню результат и вызову event.stopImmediatePropagation(), событие повторится?
|
|
|||||
|
Контрибьютор базы знаний по Флекс
Регистрация: Aug 2005
Сообщений: 690
|
насколько я понял, да. У решил эту ситуацию вышеприведенным способом. У меня уходило 2 события при нажатии ENTER после редактирования - одно связано с переходом на новую строку/столбец, другое - с потерей фокуса (OTHER). Почему у тебя 2 раза получается OTHER?
__________________
Flex 2 и Co |
|
|||||
|
Регистрация: Apr 2008
Сообщений: 5
|
Похоже что событие отсылается дважды, если в код поставить Alert.show(). Именно в момент вызова Alert.show() вызывается это же сообщение еще раз, прирывая выполнение обработчика текущего события. Вызов Alert.show() при не завершенной обработке события itemEditEnd, провоцирует срабатывание этого же события еще раз.
Если я ставлю trace(event.reason), то событие отрабатывает один раз. Интересно что еще может спровацировать повторную отправку события? Последний раз редактировалось undr; 04.04.2008 в 18:12. |
![]() |
![]() |
Часовой пояс GMT +4, время: 15:00. |
|
|
« Предыдущая тема | Следующая тема » |
|
|