首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Vaadin7 -网格禁用取消选择

Vaadin7 -网格禁用取消选择
EN

Stack Overflow用户
提问于 2015-10-13 18:59:52
回答 2查看 1.8K关注 0票数 2

如何在Vaadin7中禁用取消选择Grid行,但允许使用键盘或鼠标单击选择另一行?

代码语言:javascript
复制
Grid grid = new Grid(container);
grid.setSelectionMode(Grid.SelectionMode.SINGLE);

例如,对于较旧的Table组件- SO answer,这是可能的。但我广泛使用Grid,所以我想在这种情况下也使用它。

EN

回答 2

Stack Overflow用户

发布于 2015-10-13 20:31:34

我找到了一个有趣的解决方案,但不幸的是,它并不完美。

为了防止取消选择行,我们可以编写一个SelectionListener,并在其中放入一些逻辑:

代码语言:javascript
复制
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调用和网络传输。这是不利的。

票数 2
EN

Stack Overflow用户

发布于 2018-03-29 18:34:13

在Vaadin 8中,您可以使用:

代码语言:javascript
复制
grid.setSelectionMode(SINGLE);
((SingleSelectionModel) grid.getSelectionModel()).setDeselectAllowed(false);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33100930

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档