Я использую 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 (убедитесь, что вы еще не щелкаете по ячейке или не нажали ввод)
- Прокрутите таблицу вниз до строки 25 ( в принципе в любую строку, где строка 1 больше не видна )
- Попробуйте щелкнуть мышью в редактируемой ячейке в строке 25
- Таблица вернется к строке 1 вместо того, чтобы остаться в строке 25