2012-12-06 99 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(),所以它不是一個理想的解決方案