Kendo Grid是否存在行更改(未选中)的事件?

时间:2015-02-10 12:11:57

标签: javascript kendo-ui telerik kendo-grid

我希望通过导航检测剑道网格排的变化, ,而不是选择

通过这个我的意思是我有一个可选的网格:false,在批处理编辑模式下,我想在用户选中新行时更新数据源(在代码中)(就像Access一样)。

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

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

不幸的是,更改的事件似乎不会触发标签或箭头键(在导航模式下)。

有人会知道我可以做的任何其他方式,如上所述(即知道我们何时通过导航更改了行)

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

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

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键(或向后跳转)是相关的。

如果您不希望网格可编辑,那就更难了。这是一个快速破解:

 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

答案 1 :(得分:0)

This可能就是你要找的东西。如果需要与数据相关的事件,则必须查找DataSource事件。如果您想要与UI相关的事件,请查看网格事件。