【问题标题】:DevExtreme DataGrid onRowDblClickDevExtreme DataGrid onRowDblClick
【发布时间】:2018-04-03 23:35:02
【问题描述】:

我想为 DevExtreme DataGrid 实现一个 onRowDblClick 事件。 我需要这个事件用于多个网格,所以我想为一般的 DataGrid 实现这个。

我正在考虑覆盖 onClick 操作并检查双击或使用 onRowDblClick 操作扩展 DataGrid,但我不知道如何实现。

请提供一种实现此功能的方法。


好的,最后我实现了一个 addRowDblClick 函数,如下所示:

var clickTimer, lastRowClickedId;
function addRowDblClick(id, dblClickFunc) {
  $("#" + id).dxDataGrid({
    onRowClick: function (e) {
      //OBTAIN YOUR GRID DATA HERE
      var grid = $("#" + id).dxDataGrid('instance');
      var rows = grid.getSelectedRowsData();

      if (clickTimer && lastRowCLickedId === e.rowIndex) {
        clearTimeout(clickTimer);
        clickTimer = null;
        lastRowCLickedId = e.rowIndex;
        //YOUR DOUBLE CLICK EVENT HERE
        if (typeof dblClickFunc == 'function')
          dblClickFunc();
      } else {
        clickTimer = setTimeout(function () { }, 250);
      }
      lastRowCLickedId = e.rowIndex;
    }
  });
}

在 DataGrid 中,我调用了一个函数 OnContentReady,在这里我使用 Id 和我想在双击时调用的函数调用该函数。

addRowDblClick('dxDataGrid', showDetail);

【问题讨论】:

    标签: javascript datagrid devexpress devextreme


    【解决方案1】:

    我使用这个:

    $("#grdMain").dxDataGrid({
       ....
       onRowPrepared:function(event){
          $(event.rowElement).on('dblclick', function(){
             console.log('row dblclicked');
          }).on('remove', function(){
              //on remove event in jquery ui libraries or 
              // https://stackoverflow.com/questions/29255801/jquery-on-remove-not-working-parent-node-fire-empty
              $(this).off('dblclick remove');
         })
      }            
    })
    

    【讨论】:

      【解决方案2】:

      我做了这个并且工作得很好(我关注了this answer

      var clickTimer, lastRowCLickedId;
      
          $("#grdMain").dxDataGrid({            
              ...
              onRowClick: function (e) {               
                  //OBTAIN YOUR GRID DATA HERE
                    var grid = $("#grdMain").dxDataGrid('instance');
                    var rows = grid.getSelectedRowsData();
      
                  if (clickTimer && lastRowCLickedId === e.rowIndex) {
                      clearTimeout(clickTimer);
                      clickTimer = null;
                      lastRowCLickedId = e.rowIndex;
                      //YOUR DOUBLE CLICK EVENT HERE
                      alert('double clicked!');
                  } else {
                      clickTimer = setTimeout(function () { }, 250);
                  }
      
                  lastRowCLickedId = e.rowIndex;
              }
          });
      

      【讨论】:

      • 你对每个网格都这样做了吗?我需要一个全局实现,因为我需要 15 个网格的 onRowDblClick 事件。这就是为什么我想扩展 DataGrid。但我不知道怎么做。
      • @Ich 是的,我实际上遵循了 DX 的答案
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-25
      • 2022-12-03
      • 2018-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多