我正在将我的项目从vaadin 7迁移到vaadin 8.正在删除表。所以我用网格替换它。之前我正在获取行ID以进行多项选择,如下所示:
Set<Object> itemIds = table.getValue();
for(Object lItem : itemIds){
Integer lId = Integer.parseInt(lItem.toString());
}
但是在vaadin 8网格中有一个itemclick监听器,只有当我们点击任何项目时才会提供rowindex,并且单击任何复选框以进行选择它不会返回任何内容,因为复选框仅适用于选择监听器。见下面的代码:
lGrd.addItemClickListener(new ItemClickListener<Employee>() {
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
public void itemClick(ItemClick<Employee> event) {
if(lGrd.getSelectionModel().isSelected(event.getItem())){
if(!lSelection.contains(event.getRowIndex())){
lSelection.add(event.getRowIndex());
}
}else if(lSelection.contains(event.getRowIndex())){
lSelection.remove(event.getRowIndex());
}
Notification.show(lSelection.toString() + " Selected Employees Row Id");
}
});
同样使用选择侦听器,它不会像itemclicklistener
那样返回任何行索引 lGrd.addSelectionListener(new SelectionListener<Employee>() {
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
public void selectionChange(SelectionEvent<Employee> event) {
Set<Employee> lSet = event.getAllSelectedItems();
for(Employee emp : lSet){
//how to fetch row id here
}
});
它提供了所选项目,但没有行索引。如何在此处获取Employee Row索引。如果我想要任何列数据。如何获取它?
答案 0 :(得分:2)
自Framework 8.4.0版(发行说明)以来,Grid.ItemClick事件(Grid.ItemClick doc)还包含所单击项的行索引信息。
之前我们有一个丑陋的解决方法:( 我们戴着帽子私人清单项目; 私人网格; 作为一个班级领域。
在初始化方法中,我们用List填充了List并且
grid.setITems(项目);
onclick我们总是从click事件中获得项目早期的东西丑陋像(Item)event.getSource()。getValue()我认为现代Vaadin事件是参数化的,所以我们只需得到event.getValue()
然后我们使用了items.indexOF(event .. get Value ..);
所以我非常感谢,自从Vaadin 8.4我们可以重构这个:)! ! !