我希望通过导航检测剑道网格排的变化, ,而不是选择 。
通过这个我的意思是我有一个可选的网格:false,在批处理编辑模式下,我想在用户选中新行时更新数据源(在代码中)(就像Access一样)。
我查看了this example并更改了以下属性..
selectable: false,
navigatable: true,
editable: true,
不幸的是,更改的事件似乎不会触发标签或箭头键(在导航模式下)。
有人会知道我可以做的任何其他方式,如上所述(即知道我们何时通过导航更改了行)
提前感谢您的帮助!
答案 0 :(得分:1)
您可以使用编辑事件来确定您是否在新行中。
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相关的事件,请查看网格事件。