这个问题类似于this 。但我对 Vaadin 14 很感兴趣,因为我正在将旧的表组件迁移到网格。不再有 HeaderClickListener。因此,如何在 Grid header 上实现点击监听器。
我不介意添加一个包含用于复制的列选择的上下文菜单,但据我了解,没有 API 可以获取列中的数据?
最佳答案
在 Vaadin 14 中没有 HeaderClickListener。相反,你需要做这样的事情:
Column<MyBean> column = grid.addColumn(..)
HeaderRow headerRow = this.getHeaderRows().get(0); // Get first header row
Div component = new Div(); // Just example, anything that has click listener can be used
component.setText("Header");
headerRow.getCell(column).setComponent(component);
component.addClickListener(..);
或者您可以使用 GridContextMenu
grid.addColumn(..).setId("column");
GridContextMenu<MyBean> menu = grid.addContextMenu();
item.addMenuItemClickListener(event -> {
Notification.show(selectedColumn);
});
menu.addGridContextMenuOpenedListener(event -> {
// item is not present when clicking header
if (!event.getItem().isPresent()) {
event.getColumnId().ifPresent(id -> {
selectedColumn = id;
});
} else {
menu.close(); // Do not let menu open on body
}
});
关于vaadin - 如何将点击监听器或上下文菜单添加到 Vaadin 的网格列标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68311746/