如何确定单击的 Vaadin table 行是否已被选中或取消选中?
How determine if a Vaadin table row clicked in has been selected or deselected?
跟随用户在 Vaadin 7 table 中连续点击,我怎么知道
如果该行已被选择或取消选择 - 单击选定行将取消选择该行 - (因为还有一列
需要保持同步的复选框)?
当我在 ItemClickListener 中尝试 table.getValue() 时,如果
行被选中,如果行被取消选择,则为项目 ID - 即与
我会期待什么?
table.addItemClickListener(new ItemClickEvent.ItemClickListener() {
@Override
public void itemClick(ItemClickEvent event) {
// how tell if row has been selected or deselected?
Object idx = table.getValue();
}
});
谢谢,
史蒂夫
使用 Vaadin Grid 而不是 table。它具有 selectionListener
属性 可帮助您实现所需的功能。
在 Table api 中,您可以使用 getValue() 方法,它会产生选定的行。
根据是否处于多选模式,您可以推断出会发生什么。
(since there is also a column of checkboxes which needs to kept in
synch)?
使用 Grid
ans set grid.setSelectionMode(SelectionMode.MULTI);
默认情况下,您将有一个额外的带有复选框的列。
现在,如果您不想使用 Grid
。
对于 Table
你应该使用 vaadinTable.addValueChangeListener(...)
而不是 ItemClickListener
。
例如:
table.addValueChangeListener(new ValueChangeListener() {
@Override
public void valueChange(ValueChangeEvent event) {
//Set checkbox object as an itemId
CheckBox itemId = (CheckBox)event.getProperty().getValue();
//Manage Collection to add selected items
if(table.isSelected(itemId)) {
table.select(itemId);
itemId.setValue(true);//Add this item to collection
} else {
table.unselect(itemId); //Remove this item to collection
itemId.setValue(false);
}
}
});
另一种选择是,
table.addItemClickListener(new ItemClickEvent.ItemClickListener() {
@Override
public void itemClick(ItemClickEvent event) {
//Manage collection and manually fetch property of table
Object value = event.getItem().getItemProperty("property").getValue();
}
});
跟随用户在 Vaadin 7 table 中连续点击,我怎么知道 如果该行已被选择或取消选择 - 单击选定行将取消选择该行 - (因为还有一列 需要保持同步的复选框)?
当我在 ItemClickListener 中尝试 table.getValue() 时,如果 行被选中,如果行被取消选择,则为项目 ID - 即与 我会期待什么?
table.addItemClickListener(new ItemClickEvent.ItemClickListener() {
@Override
public void itemClick(ItemClickEvent event) {
// how tell if row has been selected or deselected?
Object idx = table.getValue();
}
});
谢谢, 史蒂夫
使用 Vaadin Grid 而不是 table。它具有 selectionListener
属性 可帮助您实现所需的功能。
在 Table api 中,您可以使用 getValue() 方法,它会产生选定的行。
根据是否处于多选模式,您可以推断出会发生什么。
(since there is also a column of checkboxes which needs to kept in synch)?
使用 Grid
ans set grid.setSelectionMode(SelectionMode.MULTI);
默认情况下,您将有一个额外的带有复选框的列。
现在,如果您不想使用 Grid
。
对于 Table
你应该使用 vaadinTable.addValueChangeListener(...)
而不是 ItemClickListener
。
例如:
table.addValueChangeListener(new ValueChangeListener() {
@Override
public void valueChange(ValueChangeEvent event) {
//Set checkbox object as an itemId
CheckBox itemId = (CheckBox)event.getProperty().getValue();
//Manage Collection to add selected items
if(table.isSelected(itemId)) {
table.select(itemId);
itemId.setValue(true);//Add this item to collection
} else {
table.unselect(itemId); //Remove this item to collection
itemId.setValue(false);
}
}
});
另一种选择是,
table.addItemClickListener(new ItemClickEvent.ItemClickListener() {
@Override
public void itemClick(ItemClickEvent event) {
//Manage collection and manually fetch property of table
Object value = event.getItem().getItemProperty("property").getValue();
}
});