vaadin 8网格行索引

时间:2018-05-11 06:48:13

标签: java vaadin8

我正在将我的项目从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索引。如果我想要任何列数据。如何获取它?

1 个答案:

答案 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我们可以重构这个:)! ! !