【问题标题】:Double Click event for DataGridDataGrid 的双击事件
【发布时间】:2013-08-31 15:39:16
【问题描述】:

我为 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");        
    }
  }
});

【问题讨论】:

  • 尝试用console.log 替换警报。警报可能会阻止您的第二次点击。
  • 我已将 WIndow.alert 替换为日志记录,我看到当我双击时它处理为 2 次点击。
  • 请给我一些建议。
  • DataGridCellTable 有很多共同点。所以我认为this question 中的解决方案也必须对你有用。
  • 它帮助了我。我真的很感激你。 :)

标签: gwt datagrid double-click


【解决方案1】:

DataGrid 与 CellTable 有很多共同点。所以this question 的解决方案也必须为您工作:

  • 使用CellPreviewHandler 计算两次点击之间的时间
  • 或者你可以使用addDomHandler方法添加DoubleClickHandler

【讨论】:

    【解决方案2】:
    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());
    

    【讨论】:

      猜你喜欢
      • 2019-02-09
      • 2017-01-15
      • 2014-04-14
      • 2011-08-22
      • 1970-01-01
      • 1970-01-01
      • 2012-07-11
      • 2014-05-12
      • 2013-01-11
      相关资源
      最近更新 更多