Flex: ItemEditor теряет фокус!
Вот изображение моей проблемы: я использую комбо-бокс в качестве редактора элементов данных Datagrid (не только рендер, мой рендерер - это метка, двойной щелчок по ячейке делает видимым комбо-бокс, как и в случае со всеми элементами). редактора)
Теперь, выбор одной из записей в поле со списком не проблема. Но моя проблема только тогда, когда я выбираю "Fruit", который в свою очередь открывает другой слой под названием "Select Fruit"
Вопросы:
Как сохранить редактор элементов, пока фокус находится на слое; прямо сейчас, как только я нажимаю на фрукт, мой обработчик выскакивает диалоговое окно "Выбор фруктов", и фокус находится на слое. Как только фокус исчезает из редактора, ItemEditor исчезает и возвращается метка ItemRenderer.
Я хочу сохранить ItemEditor в живых! где я могу подключить промежуточные события, такие как начало / конец ItemEdit и т. д.?
2 ответа
Вы можете поддержать ваш itemEditor, прослушивая DataGridEvent.ITEM_EDIT_END. Тогда у вас будет намного больше контроля, чтобы делать то, что вы хотите. Кое-что из моего блога:
DataGridEvent.ITEM_EDIT_END - Отправляется при удалении фокуса из ячейки - прослушиватель событий по умолчанию для элемента управления на основе списка будет
1) использовать свойство.editorDataFrield, чтобы определить свойство редактора элементов для хранения отредактированных данных; В редакторе элементов элемента управления TextInput по умолчанию свойство "text" будет содержать новые данные.
2) Вызвать destoryItemEditor() в зависимости от причины события
- Вы можете прервать прослушиватель событий по умолчанию для элемента управления по умолчанию, используя функцию event.preventDefault() для
а) Изменить данные, возвращаемые из редактора элементов
б) проверить / проверить данные, введенные в редакторе элементов; Если данные неверны, вы можете остановить Flex, передав данные обратно из редактора элементов в элемент управления на основе списка.
Попробуйте потерять фокус вашего ItemEditor. Goto Combo Box Change Listener
protected function comboBox_changeHandler(event:ListEvent):void
{
// set focus out event on datagrid. Its like clicking outside the datagrid
event.target.parent.parent.parent.dispatchEvent(new FocusEvent(FocusEvent.FOCUS_OUT);
}