Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java vaadin 8网格行索引中的问题_Java_Vaadin8 - Fatal编程技术网

Java vaadin 8网格行索引中的问题

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:

我正在将我的项目从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: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感谢您的反馈。