如何将点击侦听器或上下文菜单添加到 Vaadin 的网格列 Header
How to add click listener or context menu to Vaadin's Grid column Header
此题与类似。但我对 Vaadin 14 很感兴趣,因为我正在将旧的 Table 组件迁移到网格。不再有 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
}
});
此题与
我不介意添加一个带有用于复制的列选择的上下文菜单,但据我了解,没有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
}
});