如何将单击侦听器或上下文菜单添加到 Vaadin 的网格列标题 [英] How to add click listener or context menu to Vaadin's Grid column Header

查看:23
本文介绍了如何将单击侦听器或上下文菜单添加到 Vaadin 的网格列标题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这个问题类似于这个.但是我对 Vaadin 14 很感兴趣,因为我正在将旧的 Table 组件迁移到 Grids.不再有 HeaderClickListener.因此,如何在 Grid 标题上实现点击侦听器.

This question is similar to this. But I'm interested in Vaadin 14 as I am migrating old Table components to Grids. There no longer a HeaderClickListener. Therefore, how can you implement click listener on Grid header.

我不介意添加带有用于复制的列选择的上下文菜单,但据我所知,没有用于获取列中数据的 API?

I don't mind adding a context menu with a column selection for copying, but as I understand it, there is no API to get data in a column?

推荐答案

在 Vaadin 14 中没有 HeaderClickListener.相反,您需要执行以下操作:

In Vaadin 14 there is no HeaderClickListener. Instead you need to do something like this:

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

Alternatively you can use 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 的网格列标题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆