3

在Vaadin 7.5.3的Grid小部件中,我们可以通过调用或来确定当前选择的行。SelectionEvent::getSelectedGrid::getSelectedRows

那么我们如何以编程方式设置选择呢?

4

3 回答 3

7

虽然Grid 类的官方文档确实没有说明此方法,但您仍然可以通过编程方式进行操作。我不会争论它是否是一个错误。首先你需要知道你的SelectionMode. 然后您可以选择一行(或多行):

@Override
protected void init(VaadinRequest request) {
    final VerticalLayout layout = new VerticalLayout();
    Customer c = new Customer(1);
    container = new BeanItemContainer<>(Customer.class, Arrays.asList(c, new Customer(2)));
    grid = new Grid(container);
    grid.setSelectionMode(SelectionMode.SINGLE);
    SingleSelectionModel m  = (SingleSelectionModel) grid.getSelectionModel();
    m.select(c);
    layout.addComponents(grid);
    setContent(layout);
}
于 2015-08-09T06:40:48.927 回答
4

在较新的 Vaadin(在我的情况下为 7.5.6)中,select(Object)方法直接在Grid interface中。

例子:

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

例如,该row对象可以取自SelectionListener事件或添加到对象之前(如@kukis 回答)。

于 2015-10-13T12:03:27.443 回答
0

缺少 Setter 方法(错误?)

Vaadin 之书提到了 setter 方法Grid::setSelectedRows和 getter。

当前选定的行可以通过一组项 ID 使用 setSelectedRows() 设置,并使用 getSelectedRows() 读取。

但是,Grid类文档没有列出该方法。NetBeans 8.0.2 也没有在其自动完成中建议该方法。

所以显然是一个错误。见票号18,580

于 2015-08-09T06:12:10.090 回答