我有一个类似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
时,默认行为就会启动。
你对如何做到这一点有什么建议吗?
答案 0 :(得分:2)
可能有效的解决方案是使用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();
}
}
}
});
答案 1 :(得分:1)
为了禁用排序,您必须配置列以禁止排序。
E.g。如果您创建这样的列(基于http://www.sencha.com/examples/#ExamplePlace:basicgrid的源代码)
ColumnConfig<Stock, String> symbolCol = new ColumnConfig<Stock, String>(props.symbol(), 100, "Symbol");
通过添加
禁用排序symbolCol.setSortable(false);
有关文档(和其他选项),请参阅http://dev.sencha.com/deploy/gxt-3.0.0/javadoc/gxt/com/sencha/gxt/widget/core/client/grid/ColumnConfig.html#setSortable%28boolean%29。
答案 2 :(得分:1)
好的,我发现它grid.getView().setSortingEnabled(false);
。这将在单击标题时禁用排序,但保留菜单项。