如何选择vaadin表格中的所有行?
嗨如何选择vaadin表格中的所有行?,vaadin,Vaadin,嗨 我有一个复选框,一个表,一个表有10行。如果用户选中该复选框,则需要选择vaadin表中的所有10行,但我不知道如何实现此功能。有人能告诉我如何实现此功能吗?如果可能,请提供一些代码片段。确保表中有yourTable.setMultiSelect(true),然后只需迭代从yourTable.getItemId()获得的ID,并调用yourTable.select(ID)作为所有ID。 这是一种方法。Table.getValue()获取单个项目的ID或多个项目ID的集合,并且Table.ge
我有一个复选框,一个表,一个表有10行。如果用户选中该复选框,则需要选择vaadin表中的所有10行,但我不知道如何实现此功能。有人能告诉我如何实现此功能吗?如果可能,请提供一些代码片段。确保表中有yourTable.setMultiSelect(true),然后只需迭代从yourTable.getItemId()获得的ID,并调用yourTable.select(ID)作为所有ID。 这是一种方法。
Table.getValue()
获取单个项目的ID或多个项目ID的集合,并且Table.getItemID()
返回表中所有项目的ID。这意味着您可以通过以下方式选择表中的所有项目:
yourTable.setValue(yourTable.getItemIds());
请注意,如果表的容器中有很多项,这将导致性能问题。不过,在像您这样的简单案例中应该可以使用。您只需
Table table = new Table();
table.setValue(table.getItemIds());
它不应该导致性能问题,相反,您有几百行。如果你有-糟糕的架构
您还可以迭代列表(Vaadin也这样做)
您可以找到如何使用简单的迭代来反转所选列表。
简而言之:
Collection toSelect=newarraylist();
for(Iterator it=simpleTable.getItemId().Iterator();it.hasNext();){
Object next=it.next();
如果(!((集合)simpleTable.getValue()).contains(下一步))
toSelect.add(下一步);
}
simpleTable.setValue(toSelect);
在Vaadin 7中,当您有带有容器数据源的表时,可以执行以下操作:
table.setValue(container.getItemIds());
在Vaadin 6中,这对我来说很有用:
public void selectAll() {
int size = table.getItemIds().size();
for(int i = 0; i < size; i++) {
table.select(i);
}
table.requestRepaint();
}
引用变量时不要使用大写字母。setMultiSelect(true)可能会被混淆为一个静态方法,事实并非如此。您给定的链接现在已失效。
public void selectAll() {
int size = table.getItemIds().size();
for(int i = 0; i < size; i++) {
table.select(i);
}
table.requestRepaint();
}
table.setSelectable(true);
table.setMultiSelect(true);