Вкладка от ввода до ввода в CellTable

У меня есть CellTable с кучей ячеек, которые отображают <input> теги. Вкладка между входами нарушена из-за необычной обработки событий CellTable. Кажется, что вкладка вдохновляет каждую клетку finishEditing, но это в свою очередь захватывает фокус, и фокус никогда не добирается до следующего <input>,

Установка tabIndex для каждого входа, кажется, не влияет на поведение.

Как я могу восстановить обычную функциональность вкладок?

4 ответа

Решение

Я недавно понял это. Раздражает, но просто, когда вы найдете магию.

  1. Создайте новый тип ячейки для использования в вашей таблице, так как фондовый TextInputCell определяет индекс вкладки -1. В основном, делайте все, что делает TextInputCell, но не указывайте индекс табуляции в вашем шаблоне.
  2. Отключите навигацию клавиатуры по умолчанию на CellTable. cellTable.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.DISABLED)

Это должно привести к нормальной навигации по вкладкам в CellTable.

Отключение KeyboardSelectionPolicy может работать не на всех представлениях, если вы используете какие-либо фреймворки MVP. GWT выбирает ячейку вместо поля ввода внутри ячейки.

Вот решение, которое я использовал в своих приложениях: Добавление элемента управления TAB в GWT CellTable

Решение от Ben Imp прекрасно работает, если вы не измените значение ячейки, но если вы измените значение и попытаетесь перейти с помощью табуляции на следующую ячейку, оно потеряет фокус и начнется с первого элемента представления. Я не нашел решения для этого неуместного поведения.

Для тех, кто смотрит на это в будущем и пытается выяснить, как использовать табуляцию при изменении значений, сделайте то, что предлагает Ben Imp, а затем в ваших пользовательских компонентах удалите любую ссылку на super.finishEditing. В некоторых случаях это означает переопределение finishEditing и его отсутствие.

Другие вопросы по тегам