vaadin - 如何将点击监听器或上下文菜单添加到 Vaadin 的网格列标题

标签 vaadin vaadin-grid vaadin14

这个问题类似于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/

相关文章:

vaadin - 如何在 Vaadin Flow 的 FormLayout 中添加空格?

spring-boot - 如何在 Vaadin 14 LTS 中正确处理拒绝访问

java - 基于内容的 Vaadin 10 网格样式单行

java - Vaadin 如何通过选项卡中的选项卡安排重定向?

javascript - Vaadin 组合框 : Load items on input

java - 如何在 Vaadin 6 表格中显示图像?

vaadin 网格排序 bigDecimal 列

带有行索引的 Vaadin 流网格

vaadin - 我想在悬停分离器时触发 handle 受到影响

java - 我无法在一个 View 中将数据存储在对象中并从另一个 View 访问它(其中包含数据)