java - Vaadin7 - 网格禁用取消选择

标签 java vaadin vaadin7 unselect vaadin-grid

如何在 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/

相关文章:

vaadin7 - 数据绑定(bind)后更新不会更新 UI 中的内容

vaadin - 如何强制 Vaadin 客户端引擎重试向服务器发送请求?

java - 使用Gson解析JSON数字数组

java - 以编程方式调用 Eclipse 快速修复时出现运行时错误

java - 如何在netbeans中创建gradle多项目?

css - 全名在 Vaadin 的双列值中不可见

java - 在vaadin中替换formlayout的单元格

vaadin - Vaadin 表中的延迟加载?

java - 当请求数量很大时,HTTP post方法显示400错误

java - 如何使用Vaadin的CustomLayout自定义样式?