如何在 Vaadin 7 中禁止取消选择 Grid
行,但有权使用键盘或鼠标单击选择另一行?
Grid grid = new Grid(container);
grid.setSelectionMode(Grid.SelectionMode.SINGLE);
例如,这对于较旧的 Table
组件是可能的 - SO answer 。但我广泛使用 Grid
,因此我也想在这种情况下使用它。
最佳答案
我找到了一个有趣的解决方案,但不幸的是并不完美。
为了防止取消选择行,我们可以编写一个 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调用和网络传输。这是缺点。
关于java - Vaadin7 - 网格禁用取消选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33100930/