GWT - щелчок строки в CellTable с ScrollPanel возвращает к предыдущей строке, которая была в фокусе - PullRequest
0 голосов
/ 25 марта 2020

Я использую GWT 2.8.2, и у меня есть CellTable с присоединенной ScrollPanel . Когда вы щелкаете по одному из EditTextCell s, вы должны щелкнуть где-нибудь за пределами ячейки, чтобы установить действительное значение в ячейке и заставить эту ячейку потерять фокус. Однако, если вы щелкнете по ячейке и сразу же прокрутите вниз до другой строки в таблице и попытаетесь щелкнуть по этой строке, представление go вернется к первой строке вместо того, чтобы установить фокус на ячейке строки, которую вы только что щелкнул.

Одна идея, которую я попытался, состояла в том, чтобы установить KeyboardSelectionPolicy в ОТКЛЮЧЕНО примерно так.

myTable.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.DISABLED);

Технически это решает проблему, однако, это устраняет навигацию с клавиатуры, и мне нужно, чтобы пользователи могли использовать стрелки вверх и вниз для выбора строк.

Еще одна идея, которая у меня была, - это программная установка выбранной строки таблицы на основе нажатой кнопки. row.

myTable.addCellPreviewHandler(new CellPreviewEvent.Handler() {
  @Override
  public void onCellPreview(CellPreviewEvent event) {
    if ("click".equals(event.getNativeEvent().getType())) {
      Window.alert("Current Selected Row : " + myTable.getKeyboardSelectedRow());
      myTable.setKeyboardSelectedRow(myTable.getKeyboardSelectedRow());
    }
  }
});

Это выведет правильный номер строки в Window.alert, но не помешает GWT вернуться к предыдущей строке в пользовательском интерфейсе.

Шаги для репликации

  1. Нажмите на редактируемую ячейку в строке 1 (убедитесь, что вы еще не щелкаете по ячейке или не нажали ввод)
  2. Прокрутите таблицу вниз до строки 25 ( в принципе в любую строку, где строка 1 больше не видна )
  3. Попробуйте щелкнуть мышью в редактируемой ячейке в строке 25
  4. Таблица вернется к строке 1 вместо того, чтобы остаться в строке 25
...