2015-10-13 3 views
2

Как отключить unselecting Grid строку в Vaadin 7, но с разрешением выбрать другую строку с помощью клавиатуры или мыши?Vaadin7 - Сетка отключена unselecting

Grid grid = new Grid(container); 
grid.setSelectionMode(Grid.SelectionMode.SINGLE); 

Например, это возможно для старшего Table компонента - SO answer. Но я широко использую Grid, поэтому я хочу использовать его и в этом случае.

ответ

1

Я нашел одно интересное решение, но, к сожалению, не совершенное.

Для предотвращения Deselect строки мы могли бы написать SelectionListener и поставить там какая-то логика:

grid.setSelectionMode(Grid.SelectionMode.SINGLE); 
grid.addSelectionListener(event -> { 
    Set<Object> selected = event.getSelected(); 
    if (selected == null || selected.isEmpty()) { 
     Set<Object> removed = event.getRemoved(); 
     removed.stream().filter(Objects::nonNull).forEach(someGrid::select); 
    } 
}); 

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

Это круто, но недостаточно - каждый клик (выбор) вызывает передачу и передачу по сети. Это недостаток.

 Смежные вопросы

  • Нет связанных вопросов^_^