2015-02-07 25 views
2

我試圖修改kendo Grid的InCell編輯模式的行爲。我的意思是我試圖用箭頭導航到單元格,但是我在做這件事時遇到了問題。Kendo Grid在移動到下一個單元格後沒有保存值

這是我的代碼:

$("#grid").keydown(function (e) { 
    debugger; 
    isEditStarted = true; 
    var totlaColumns = $($(" #grid td")[0]).nextAll().length + 1; 
    currentTD = $(" #grid td.k-edit-cell"); 
    var indexx = $("#grid td").index($(" #grid td.k-edit-cell")); 
    //currentTDIndex = $(currentTD).parent().children().index($(currentTD)) + 1; 
    if (isEditStarted) { 
     var code = e.keyCode || e.which; 
     if (code === 37) { 


      //left Key 
      //var eventEnter = jQuery.Event("keypress"); 
      //eventEnter.which = 18; 
      //eventEnter.keyCode = 18; 
      var x = "#" + $($(" #grid td")[$(" #grid td").index($(" #grid td.k-edit-cell"))]).find('input').attr('id'); 
      var valuem = $(x).val(); 
      var position = $(currentTD).prevAll("td").length + 1; 
      var length = $(currentTD).prevAll("td").length; 
      if (length > 1) { 

       debugger; 
       $("#grid tr td").removeClass('BorderHighlight'); 
       $(x).val(valuem); 
       $($(currentTD).prevAll("td")[0]).click(); 
       $($(currentTD).prevAll("td")[0].childNodes[0]).addClass('BorderHighlight'); 

      } 


     } 
     else if (code === 38) { 
      currentTD = $(" #grid td.k-edit-cell"); 
      var position = $(currentTD).prevAll("td").length + 1; 
      var currentRow = $(" #grid td.k-edit-cell").parent().parent().find('tr').index($(" #grid td.k-edit-cell").parent()); 
      var newPosition = currentRow > -1 ? (currentRow - 1) * totlaColumns + position - 1 : 0; 
      $($(" #grid td")[newPosition]).click(); 
      $($(" #grid td")[newPosition].childNodes[0]).addClass('BorderHighlight'); 

     } 
     else if (code === 39) { 
      currentTD = $(" #grid td.k-edit-cell"); 
      var length = $(currentTD).nextAll("td").length; 
      if (length > 1) { 
       $("#grid tr td").removeClass('BorderHighlight'); 
       $($(currentTD).nextAll("td")[0]).click(); 
       $($(currentTD).nextAll("td")[0].childNodes[0]).addClass('BorderHighlight'); 
      } 

     } 
     else if (code === 40) { 
      currentTD = $(" #grid td.k-edit-cell"); 
      var position = $(currentTD).prevAll("td").length + 1; 
      var currentRow = $(" #grid td.k-edit-cell").parent().parent().find('tr').index($(" #grid td.k-edit-cell").parent()); 
      var newPosition = currentRow > -1 ? (currentRow + 1) * totlaColumns + position - 1 : 0; 
      $($(" #grid td")[newPosition]).click(); 
      $($(" #grid td")[newPosition].childNodes[0]).addClass('BorderHighlight'); 
     } 
    } 

}) 

這裏是 Demo的功能。我能夠通過鍵瀏覽網格,但是這樣做時網格值不會被保存。我的意思是當我點擊一個空單元格,然後輸入一個值並移動到下一個單元格時,使用右箭頭鍵,那麼以前的值不會被保存。但價值被保存,當我們點擊Enter鍵或Tab鍵或Alt(兩次),然後移動到下一個單元,則在值被保存

PS:演示鏈接連接

+1

請務必發佈您的代碼與問題 – 2015-02-07 15:29:13

回答

1

之前設置的重點下一個單元格,您需要撥打_handleEditing。您也不需要單擊網格並刪除類;所有你需要的是這個(例如右箭頭):

var code = e.keyCode || e.which, 
    grid = $("#grid").data("kendoGrid"), 
    current = grid.editable.element, 
    next = $(current).nextAll("td").eq(0), 
    container = $(e.target).closest("[role=gridcell]"), 
    length; 

if (code === 39) { 
    length = $(current).nextAll("td").length; 
    if (length > 1) { 

     if (!container[0]) { 
      container = current; 
     } 

     grid._handleEditing(container, next, e.currentTarget); 
    } 
} 
+0

謝謝你。我會明天再試,並會讓你知道 – Vivekh 2015-02-08 02:16:21

+0

它像一個魅力。萬分感謝 – Vivekh 2015-02-09 08:25:41

相關問題