如何解决如何将单击侦听器或上下文菜单添加到 Vaadin 的网格列标题
这个问题类似于this。但是我对 Vaadin 14 很感兴趣,因为我正在将旧的 Table 组件迁移到 Grids。不再有 HeaderClickListener。因此,如何在 Grid 标题上实现点击侦听器。
我不介意添加带有用于复制的列选择的上下文菜单,但据我所知,没有用于获取列中数据的 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
}
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。