1

我为 DataGrid 添加了双击事件,但它不能正常工作。该代码处理单击,但处理双击。

请帮忙。

private DataGrid<Contract> table = new DataGrid<Contract>();
table.addCellPreviewHandler(new Handler<Contract>() {
  @Override
  public void onCellPreview(final CellPreviewEvent<Contract> event) {
    if (BrowserEvents.DBLCLICK.equals(event.getNativeEvent().getType())) {
      //it doesn't handle
      Window.alert("Tro-lo-lo");
    }
    if (BrowserEvents.CLICK.equals(event.getNativeEvent().getType())) {
      //it handles
      Window.alert("Tru-la-la");        
    }
  }
});
4

2 回答 2

1

DataGrid 与 CellTable 有许多共同点。因此,该问题的解决方案也必须对您有用:

  • 使用CellPreviewHandler两次点击之间的计数时间
  • 或者你可以添加DoubleClickHandler使用addDomHandler方法
于 2013-08-30T14:35:33.773 回答
1
dataGrid.addDomHandler(new DoubleClickHandler() {
    @SuppressWarnings("unchecked")
    @Override
    public void onDoubleClick(DoubleClickEvent event) { 
        DataGrid<YourDataProviderType> grid = (DataGrid<YourDataProviderType>) event.getSource();
        int row = grid.getKeyboardSelectedRow();
        YourDataProviderType item = grid.getVisibleItem(row);
        Window.alert("Do Something Here");
    }    
}, DoubleClickEvent.getType());
于 2014-08-29T01:45:55.983 回答