停止 CellTable 中自定义单元格的点击传播
stop click propagation of custom cell in CellTable
我有一个 CellTable,我附加了一个点击处理程序(通过 addDomHandler)。然后我添加了一个处理 onBrowserEvent(...) 的自定义单元格。
我想停止事件在单元格的 onBrowserEvent 中传播,以便不再调用 table 处理程序。这可能吗?
table = new CellTable();
table.addDomHandler(new ClickHandler() {
@Override
public void onClick(final ClickEvent pEvent) {
Trace.info("this shouldn't trigger");
}
}, ClickEvent.getType());
table.addColumn(new IdentityColumn<MyVO>(new MyCell()));
class MyCell extends AbstractCell<MyVO> {
@Override
public void onBrowserEvent(com.google.gwt.cell.client.Cell.Context pContext, Element pParent,
Handle<DnSuggestionDetailsVO> pValue, NativeEvent pEvent,
ValueUpdater<Handle<DnSuggestionDetailsVO>> pValueUpdater) {
Trace.info("cell onBrowserEvent handled, propagation should stop here!");
pEvent.stopPropagation();
}
}
谢谢!
在事件到达单元格之前取消事件更容易:
table.addCellPreviewHandler(new Handler<Item>() {
@Override
public void onCellPreview(CellPreviewEvent<Item> event) {
//do something
event.setCancelled(true);
}
});
请注意,CellPreviewHandler 已监控 table 内的所有事件。您也可以将它用于您的 ClickEvent(具有更好的控制,例如单击哪一列),而不是将 ClickHandler 添加到整个 table.
我有一个 CellTable,我附加了一个点击处理程序(通过 addDomHandler)。然后我添加了一个处理 onBrowserEvent(...) 的自定义单元格。 我想停止事件在单元格的 onBrowserEvent 中传播,以便不再调用 table 处理程序。这可能吗?
table = new CellTable();
table.addDomHandler(new ClickHandler() {
@Override
public void onClick(final ClickEvent pEvent) {
Trace.info("this shouldn't trigger");
}
}, ClickEvent.getType());
table.addColumn(new IdentityColumn<MyVO>(new MyCell()));
class MyCell extends AbstractCell<MyVO> {
@Override
public void onBrowserEvent(com.google.gwt.cell.client.Cell.Context pContext, Element pParent,
Handle<DnSuggestionDetailsVO> pValue, NativeEvent pEvent,
ValueUpdater<Handle<DnSuggestionDetailsVO>> pValueUpdater) {
Trace.info("cell onBrowserEvent handled, propagation should stop here!");
pEvent.stopPropagation();
}
}
谢谢!
在事件到达单元格之前取消事件更容易:
table.addCellPreviewHandler(new Handler<Item>() {
@Override
public void onCellPreview(CellPreviewEvent<Item> event) {
//do something
event.setCancelled(true);
}
});
请注意,CellPreviewHandler 已监控 table 内的所有事件。您也可以将它用于您的 ClickEvent(具有更好的控制,例如单击哪一列),而不是将 ClickHandler 添加到整个 table.