代码之家  ›  专栏  ›  技术社区  ›  Ich

DevExtreme DataGrid onRowDblClick

  •  1
  • Ich  · 技术社区  · 7 年前

    我想为DevExtreme数据网格实现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中,我调用了一个函数onContentTready,在这里我用Id和双击时想要调用的函数调用这个函数。

    addRowDblClick('dxDataGrid', showDetail);
    2 回复  |  直到 7 年前
        1
  •  1
  •   Haydar C.    6 年前

    $("#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
  •  0
  •   Victor Hugo Terceros    7 年前

    我做到了,并且做得很好(我遵循了 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;
            }
        });