以编程方式在Vaadin 7中选择Grid中的一行?

时间:2015-08-09 03:43:44

标签: vaadin vaadin7 vaadin-grid

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

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

3 个答案:

答案 0 :(得分:5)

虽然Grid class的官方文档没有说明此方法,但您仍然可以通过编程方式进行操作。我不会争论这是不是一个错误。首先,你需要知道你的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);
}

答案 1 :(得分:4)

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

示例:

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

例如,row对象可以从SelectionListener事件中获取,也可以从对象之前添加(如@kukis中的答案)。

答案 2 :(得分:0)

Setter Method Missing(bug?)

“瓦丁书”中提到了二传手法Grid::setSelectedRows以及一个吸气剂。

  

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

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

显然是一个错误。请参见Ticket#18,580