【问题标题】:Vaadin7 - Grid disable unselectingVaadin7 - 网格禁用取消选择
【发布时间】:2016-01-11 02:25:51
【问题描述】:

如何在 Vaadin 7 中禁用取消选择 Grid 行,但有权使用键盘或鼠标单击选择另一行?

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

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

【问题讨论】:

    标签: java vaadin vaadin7 unselect vaadin-grid


    【解决方案1】:

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

    为了防止取消选择行,我们可以写一个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调用和网络传输。这是劣势。

    【讨论】:

      【解决方案2】:

      在 Vaadin 8 中,您可以使用:

      grid.setSelectionMode(SINGLE);
      ((SingleSelectionModel) grid.getSelectionModel()).setDeselectAllowed(false);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-10-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-29
        • 2020-10-20
        • 2013-12-02
        相关资源
        最近更新 更多