#apache-flex #events #datagrid #keydown
#apache-flex #Мероприятия #datagrid #нажатие клавиши
Вопрос:
Всем привет, у меня есть гибкая редактируемая сетка данных. По умолчанию, если я нажимаю клавишу со стрелкой навигации влево, она перемещается влево, но не к следующей ячейке. Я хотел бы переопределить событие нажатия клавиш таким образом, чтобы при нажатии клавиши со стрелкой навигации влево я устанавливал фокус на следующую ячейку слева.
Короче говоря, пользователь должен иметь возможность перемещаться с помощью клавиатуры по ячейкам, используя точно так же, как в Excel (в настоящее время клавиши со стрелками перемещаются между символами внутри ячейки).
Комментарии:
1. Такой шаг нарушил бы «Приоритет пользовательского интерфейса» и может запутать пользователей. При редактировании ввода текста клавиши со стрелками не должны перемещаться к следующему столбцу.
2. я понимаю, но это требование, от которого я не могу убежать.
Ответ №1:
Поскольку вы не можете отказаться от этого требования. Я бы попробовал добавить прослушиватель событий к событию KEY_UP. Если это код для клавиши со стрелкой, уничтожьте itemEditor с помощью метода destroyItemEditor и вручную перейдите к следующему столбцу, установив свойство editedItemPosition.
Я почти уверен, что код символа 39 — это стрелка вправо, а код символа 37 — влево, по крайней мере, в соответствии с этим приложением.
Комментарии:
1. Большое спасибо, я добиваюсь этого прямо сейчас, как я могу включить rowindex и columnindex? Я тестировал со следующим. защищенная функция dataGrid_keyDownHandler (событие: KeyboardEvent):аннулирует { if(event.keyCode == 39){ event.preventDefault(); DataGrid.editedItemPosition ={индекс столбца: 1, индекс строки: 0} } }
2. Попробуйте посмотреть на editedItemPosition, прежде чем изменять его. Поскольку это не свойство «только для записи», вы должны получить текущую позицию.