2017-04-05 82 views
1

如何实现以下功能,当按下箭头键时,应该转到相应单元格并输入单元格,以便用户可以立即开始输入而不必进入单元格首先,如果箭头键在数字单元格中被按下,它应该忽略添加或减去数字的默认行为,而是转到下一行的上部或下部单元格。kendo grid - 使用箭头键导航并输入单元格

编辑

这里是我想出的代码,但它只能有时有有时它会跳过一个或两个细胞,有什么建议?

$(document).ready(function() { 
    var grid = $("#grid").data("kendoGrid"); 
    $(grid.tbody).on("keydown", "td",function (e) { 
     if (e.keyCode >= 37 && e.keyCode <= 40) { 
      var row = $(this).closest("tr"); 
      var rowIndex = $("tr", grid.tbody).index(row); 
      var colIndex = $("td", row).index(this); 
      grid.closeCell(); 

      if (e.keyCode == 37) {//left 
       colIndex--; 
      } 
      if (e.keyCode == 38) {//up 
      rowIndex--; 
      } 
      if (e.keyCode == 39) {//right 
       colIndex++ 
      } 
      if (e.keyCode == 40) {//down 
       rowIndex++ 
      } 
      grid.editCell($("#grid tr:eq(" + rowIndex + ") td:eq(" + colIndex + ")")); 
     } 
    }); 
}); 

回答

2

在代码中有一个愚蠢的错误,它阻止了它的工作。你知道,剑道的网格实际上有两个表格,一个用于头部,另一个用于身体。所以,如果你在选择指定人体的表tbody元素(标题表不富人该元素),它会工作:

grid.editCell($("#grid tbody tr:eq(" + rowIndex + ") td:eq(" + colIndex + ")")); 
         ^^^^^ // add here the 'tbody' element 

Demo

此外,我在最后添加了一点逻辑,以便用户能够在导航时遍历行和单元格。

这是一个这样一个简单的功能,应该是本机在小部件,恕我直言。

+0

非常好的答案谢谢!但是,现在我有一个工作解决方案,我注意到对单元格所做的更改没有得到保存 – agDev

+0

@agDev,或许这可能是另一个问题。我建议你就这个问题创建另一个问题。 – DontVoteMeDown

+0

嘿@agDev我看到你没有问你的编辑内容没有保存到数据源的问题的另一个问题。你找到解决方案吗? – IronSean