Проблема в vaadin 8 Индекс строки сетки - PullRequest
0 голосов
/ 11 мая 2018

Я переношу свой проект с vaadin 7 на vaadin 8. Поскольку таблица удалена.поэтому я заменяю его на сетку.ранее я выбирал идентификаторы строк для множественного выбора, например:

  Set<Object> itemIds = table.getValue();
  for(Object lItem : itemIds){
      Integer lId = Integer.parseInt(lItem.toString());
  }

Но в сетке vaadin 8 есть прослушиватель щелчков по элементам, который предоставляет индекс строки только в том случае, если мы щелкаем любой элемент и нажимаем любой флажок для выбора.он ничего не возвращает, так как флажки работают только с прослушивателем выбора.см. код ниже:

  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 голосов
/ 11 мая 2018

Начиная с версии Framework 8.4.0 (примечания к выпуску), событие Grid.ItemClick (документ Grid.ItemClick) также содержит информацию индекса строки для выбранного элемента.

до этого у нас был уродливый обходной путь :(

we hat

private элементы списка; приватная сетка Grid; как поля классов.

в методе инициализации мы заполнили список элементами и имели

grid.setITems (items);

на клике у нас всегда был элемент от события Click ранее что-то уродливое, как (Item) event.getSource (). getValue () я думаю, что в современном Vaadin событие параметризовано, поэтомумы просто получаем event.getValue ()

, затем мы использовали items.indexOF (event .. get Value ..);

, поэтому я ОЧЕНЬ благодарен, что, начиная с Vaadin 8.4, мы можем выполнить рефакторинг этого:)!!

...