【问题标题】:stop click propagation of custom cell in CellTable停止 CellTable 中自定义单元格的点击传播
【发布时间】:2015-06-27 01:01:37
【问题描述】:

我有一个 CellTable,我附加了一个点击处理程序(通过 addDomHandler)。然后我添加了一个处理 onBrowserEvent(...) 的自定义单元格。 我想停止事件在单元格的 onBrowserEvent 中传播,以便不再调用表处理程序。这可能吗?

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();
            }
}

谢谢!

【问题讨论】:

    标签: events gwt gwt-celltable event-propagation


    【解决方案1】:

    在事件到达单元格之前取消它更容易:

    table.addCellPreviewHandler(new Handler<Item>() {
        @Override
        public void onCellPreview(CellPreviewEvent<Item> event) {
            //do something
            event.setCancelled(true);
        }
    });
    

    请注意,CellPreviewHandler 已经监视了表中的所有事件。您也可以将它用于您的 ClickEvent(通过更精细的控制,例如单击哪一列),而不是将 ClickHandler 添加到整个表中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-25
      • 1970-01-01
      • 2014-04-09
      • 2016-10-07
      • 2013-04-24
      • 1970-01-01
      • 1970-01-01
      • 2018-05-10
      相关资源
      最近更新 更多