Я хочу реализовать событие 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);
Я сделал это и работал очень хорошо (я последовал за этим ответом)
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;
}
});