我在应用中使用Kendo Grid。要求是双击可以编辑网格。我正在处理.dblclick
事件,并使用.editCell(cell)
以编程方式使单元格可编辑。问题是我需要保存更改,当有人在单元格外单击或按下进入或返回按钮并在有人单击ESC时撤消。此外,如果日期无效,我不应该保存。
我尝试了焦点,模糊,单击事件但有些工作,有些没有,有些重叠,不会让单元格打开。
这是我的代码。
//code for double click;
$('#grid').delegate('tbody>tr>td','dblclick', function (e) {
console.log("double clicked");
if($(".k-grid-edit-row").length <= 0) {
$("#grid").data("kendoGrid").editCell($(this));
}
});
$('#grid tbody').on('blur','input,select,textarea',saveGrid);
$('#grid').delegate('tbody>tr>td','focusout',function() {
console.log("inside focusout");
if($(this).hasClass("k-edit-cell"))
return;
saveGrid();
});
$('#grid').delegate('tbody>tr>td','click', function(e){
console.log("singleClick called");
if($(this).hasClass("k-edit-cell"))
return;
saveGrid();
});
function saveGrid() {
console.log("save grid called");
var grid = $("#grid").data("kendoGrid");
var editedCellIndex =grid.cellIndex(grid.tbody.find(">tr td.k-edit-cell"));
console.log("this cell index:"+grid.cellIndex($(this)));
console.log(" Edited cell index :"+editedCellIndex);
if(editedCellIndex<0) {
return false;
}
if($(".k-grid-edit-row").hasClass("k-invalid")) {
return false;
}
grid.closeCell();
console.log("saving changes");
grid.saveChanges();
}
如果您需要更多信息,请与我们联系。
答案 0 :(得分:0)
当有人按下网格时调整事件(调整功能以检查单元格外),请使用以下命令:
$('html').on('click', function (e) {
if (!$(e.target).parent().hasClass('k-master-row') && !$(e.target).hasClass('k-input')) {
var grid = $("#Grid").data("kendoGrid")
//use this if the row was selected
//grid.clearSelection();
//do something
grid.saveChanges();
}
});
请注意,这会弄乱其他点击事件,这会阻止我在我的项目中使用.on()
在任何其他jQuery代码中(所以我使用已弃用的.live()
),所以它不是理想的解决方案