Java vaadin 8网格行索引中的问题
我正在将我的项目从vaadin 7迁移到vaadin 8。当桌子被移走时。所以我用网格来代替它。之前,我获取多个选择的行ID,如下所示:Java vaadin 8网格行索引中的问题,java,vaadin8,Java,Vaadin8,我正在将我的项目从vaadin 7迁移到vaadin 8。当桌子被移走时。所以我用网格来代替它。之前,我获取多个选择的行ID,如下所示: Set<Object> itemIds = table.getValue(); for(Object lItem : itemIds){ Integer lId = Integer.parseInt(lItem.toString()); } Set itemIds=table.getValue(); 对于(对象lItem:
Set<Object> itemIds = table.getValue();
for(Object lItem : itemIds){
Integer lId = Integer.parseInt(lItem.toString());
}
Set itemIds=table.getValue();
对于(对象lItem:itemIds){
整数lId=Integer.parseInt(lItem.toString());
}
但在Vaadin8网格中,有一个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");
}
});
lGrd.addItemClickListener(新项目ClickListener(){
/**
*
*/
私有静态最终长serialVersionUID=1L;
@凌驾
公共无效项单击(项单击事件){
如果(lGrd.getSelectionModel().isSelected(event.getItem())){
如果(!lSelection.contains(event.getRowIndex())){
lSelection.add(event.getRowIndex());
}
}else if(lSelection.contains(event.getRowIndex())){
lSelection.remove(event.getRowIndex());
}
Notification.show(lSelection.toString()+“所选员工行Id”);
}
});
同样使用selection listener,它不会像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
}
});
lGrd.addSelectionListener(新建SelectionListener(){
/**
*
*/
私有静态最终长serialVersionUID=1L;
@凌驾
公共作废selectionChange(SelectionEvent事件){
Set lSet=event.getAllSelectedItems();
对于(员工emp:lSet){
//如何在此处获取行id
}
});
它提供选定的项目,但没有行索引。如何在此处获取员工行索引。如果需要任何列数据,也可以在此处获取。如何获取?自Framework 8.4.0版(发行说明)以来,Grid.ItemClick事件(Grid.ItemClick doc)还包含已单击项目的行索引信息 在此之前,我们有一个丑陋的解决办法:( 我们戴着帽子 私人清单项目; 私有电网; 作为类字段 在初始化方法中,我们在列表中填写了项目,并且 网格。设置项(项) 在单击之前,我们总是使用click事件中的项,比如(item)Event.getSource().getValue(),我认为使用现代Vaadin,事件是参数化的,所以我们只需要获取Event.getValue() 然后我们使用items.indexOF(event..get Value..)
所以我非常感谢,自从Vaadin 8.4以来,我们可以重构它:)!!!自从框架版本8.4.0(发行说明)以来,Grid.ItemClick事件(Grid.ItemClick doc)还包含单击项的行索引信息 在此之前,我们有一个丑陋的解决办法:( 我们戴着帽子 私人清单项目; 私有电网; 作为类字段 在初始化方法中,我们在列表中填写了项目,并且 网格。设置项(项) 在单击之前,我们总是使用click事件中的项,比如(item)Event.getSource().getValue(),我认为使用现代Vaadin,事件是参数化的,所以我们只需要获取Event.getValue() 然后我们使用items.indexOF(event..get Value..)
所以我非常感谢,因为Vaadin 8.4我们可以重构它:)!!!您好,谢谢您的时间,实际上我希望在行选择中使用行索引。我如何做到这一点?网格客户端知道它当前显示的行的行索引。因此,在ItemClickEvent中实现这一点是不需要动脑筋的。选择是完全不同的情况,因为它也可以编程,然后您就有了这样的情况您选择了一个未显示的行。然后我们不知道索引。覆盖所有用例的实现将要求网格获取整个数据并计算索引。这就是为什么我们将此留给开发人员,以便更好地理解O(1)与O(N)的区别操作。@Vilius Kukanauskas感谢您的反馈。您好,谢谢您的时间,实际上我希望在行选择中使用行索引。我怎么做呢?网格客户端知道它当前显示的行的行索引。因此,在ItemClickEvent中实现这一点很容易。选择完全不同,因为它也可以编程,然后选择一个未显示的行。然后我们不知道索引。覆盖所有用例的实现将需要网格获取整个数据并计算索引。这就是为什么我们将此留给开发人员,以便很好地理解O(1)与O(N)的区别操作。@Vilius Kukanauskas感谢您的反馈。