Grid
Vaadin 7で行の選択解除を無効にする方法はありますが、キーボードまたはマウスのクリックを使用して別の行を選択する権限がありますか?
Grid grid = new Grid(container);
grid.setSelectionMode(Grid.SelectionMode.SINGLE);
たとえば、これは古いTable
component- SO answerで可能です。でも私はよく使うGrid
のでこういう場合にも使いたいです。
興味深い解決策を 1 つ見つけましたが、残念ながら完全ではありません。
行の選択解除を防ぐために、 a を記述して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);
}
});
したがって、単一選択モードを想定すると、現在の選択が空の場合、前に選択した行を再度選択する必要があります。ただし、現在の選択が空でない場合は、誰かが別の行を選択したことを意味します - これには何もする必要はありません。
クールですが、十分ではありません。クリック (選択) するたびに、http 呼び出しとネットワーク転送が発生します。これがデメリットです。
Vaadin 8 では、以下を使用できます。
grid.setSelectionMode(SINGLE);
((SingleSelectionModel) grid.getSelectionModel()).setDeselectAllowed(false);