Kendo Grid 行更改(未选中)时是否有事件?

Kendo Grid Is there an event for when a row changes (not selected)?

我希望检测 Kendo 网格的行何时发生变化,通过导航而不是选择

我的意思是我会有一个带有 selectable: false 的网格,在批处理编辑模式下,我想在用户切换到新行时(就像 Access 一样)更新数据源(在代码中) ).

我查看了 this example 并更改了以下属性..

selectable: false,
navigatable: true,
editable: true,

不幸的是,changed 事件似乎不会触发制表符或箭头键(在导航模式下)。

有没有人知道我可以按照上述方法做的任何其他方法(即知道我们何时通过导航更改了行)

在此先感谢您的帮助!

您可以使用编辑事件来确定您是否在新行中。

Here you go:

selectable: false,
navigatable: true,
editable: true,
edit: function(e) {
    if (e.sender.cellIndex($(e.container)) === 0 && 
        $(e.container).closest("tr").index() !== 0) {
        console.log("next row; update DS");
    }
},

您还可以存储您所在的最后一行并使用它确定更改,如果以其他方式在行之间切换而不是通过 tab 键(或向后 tab 键时)是相关的。

如果你不希望网格是可编辑的,那就更难了。这是一个快速技巧:

 var grid = $("#grid").data("kendoGrid");
 var elem = $(grid.table)[0];
 var handlers = $._data(elem, "events")["keydown"][2];
 var oldHandler = handlers.handler;

 // replace the existing event handler attached by kendo grid
 var newHandler = function (e) {
     oldHandler(e);

     var current = grid.current();
     var closestRow = $(current).closest("tr");
     var rowIndex = $(closestRow).index();

     if (rowIndex !== grid._lastNavRowIndex) {
         if (typeof grid._lastNavRowIndex !== "undefined") {
             kendoConsole.log("we just changed to row " + rowIndex);
         }
         grid._lastNavRowIndex = rowIndex;
     }


 };

 handlers.handler = newHandler;
 });

试试看 here.

This 可能是您要查找的内容。当您需要与数据相关的事件时,您必须查找 DataSource 事件。当您需要与 UI 相关的事件时,您可以查看 Grid 事件。