DevExtreme DataGrid onRowDblClick

1

Я хочу реализовать событие onRowDblClick для DevExtreme DataGrid. Мне нужно это событие для нескольких гридов, поэтому я хотел бы реализовать это для DataGrid для общего.

Я думал о том, чтобы переопределить действие onClick и проверить двойной щелчок или расширить DataGrid с помощью действия onRowDblClick, но я не знаю, как это реализовать.

Просьба сообщить, как это сделать.


ОК, наконец, я внедрил функцию 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, где я вызываю эту функцию с идентификатором и функцией, которую я хочу вызвать, когда я дважды кликаю.

addRowDblClick('dxDataGrid', showDetail);
Теги:
datagrid
devexpress
devextreme

1 ответ

0
Лучший ответ

Я сделал это и работал очень хорошо (я последовал за этим ответом)

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;
        }
    });
  • 0
    Вы сделали это для каждой сетки? Мне нужна глобальная реализация, потому что мне нужно событие onRowDblClick для 15 сеток. Вот почему я хочу расширить DataGrid. Но я не знаю как.
  • 0
    @ Да, я действительно следовал ответу от DX

Ещё вопросы

Сообщество Overcoder
Наверх
Меню