2

GridVaadin 7で行の選択解除を無効にする方法はありますが、キーボードまたはマウスのクリックを使用して別の行を選択する権限がありますか?

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

たとえば、これは古いTablecomponent- SO answerで可能です。でも私はよく使うGridのでこういう場合にも使いたいです。

4

2 に答える 2

2

興味深い解決策を 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 呼び出しとネットワーク転送が発生します。これがデメリットです。

于 2015-10-13T12:31:34.427 に答える
2

Vaadin 8 では、以下を使用できます。

grid.setSelectionMode(SINGLE);
((SingleSelectionModel) grid.getSelectionModel()).setDeselectAllowed(false);
于 2018-03-29T10:34:13.227 に答える