Я переношу свой проект с vaadin 7 на vaadin 8. Поскольку таблица удалена. поэтому я заменяю его сеткой. Раньше я получал идентификаторы строк для множественного выбора следующим образом:
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
}
});
Он предоставляет выбранные элементы, но без индекса строки. Как получить индекс строки сотрудников здесь. Также, если мне нужны какие-либо данные столбца. Как его получить?