2012-12-06 96 views
2

我在应用程序中使用Kendo Grid。要求是双击可编辑网格。我正在处理.dblclick事件,并使用.editCell(cell)以编程方式编辑单元格。问题是我需要保存更改,当有人在单元格外单击或按下“输入”或“返回”按钮并在有人单击ESC时撤销。而且,如果日期无效,我不应该保存它。双击编辑Kendo Grid incell或内联编辑

我尝试过专注,模糊,点击事件,但有些工作,有些没有,有些重叠,并没有让单元打开。

这是我的代码。

//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

可能有人请帮助我。 – naquiuddin

+0

你可以把它放在一个jsfiddle或jsbin中,并将它实现到最好的能力?这样我们可以进来看看我们是否可以帮助实施其他不工作的部分。 –

回答

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(); 
} 

});

意识到,这可以搞砸其他点击事件,它使我在我的项目在其他任何jQuery代码(所以我用的是过时.live())使用.on(),所以它不是一个理想的解决方案