我有一个像this one的网格。该小部件的默认行为是在单击标题时对列进行排序。我想禁用它,而只在上下文菜单中保留选项。

grid.addHeaderClickHandler(new HeaderClickHandler() {

    @Override
    public void onHeaderClick(HeaderClickEvent event) {
        event.getEvent().cancelBubble(true);
        event.getEvent().preventDefault();
        event.getEvent().stopPropagation();
        Window.alert("Event caught");
    }
});


警报在排序之前显示。但是,当单击Ok时,将启动默认行为。

您对如何做到这一点有何建议?

最佳答案

可能有效的解决方案是使用NativePreviewHandler,类似于

Event.addNativePreviewHandler(new NativePreviewHandler()
    {
        @Override
        public void onPreviewNativeEvent(final NativePreviewEvent event)
        {
            if (event.getTypeInt() == Event.ONCLICK)
            {
                Element targetElement = Element.as(event.getNativeEvent().getEventTarget());
                if (!tableHeader.asWidget().getElement().isOrHasChild(targetElement))
                {
                    event.getNativeEvent().stopPropagation();
                }
            }
        }
    });

07-27 16:19