2015-02-10 58 views
2

我當時希望能夠檢測出Kendo網格的行更改時,通過導航而不是選擇。這個我的意思是我會有一個可選擇的網格:false,在批處理編輯模式,我想更新數據源(在代碼中)當用戶選項卡到一個新行(就像訪問一樣) 。Kendo網格當行更改(未選中)時是否有事件?

我已經看過this example,改變了以下屬性..

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

不幸的是,更改事件似乎並不時火標籤或箭頭鍵(在導航模式時)。

會有人知道任何其他方式我能做到如上所述(即知道什麼時候我們已經通過導航改變行)提前

感謝您的幫助!

回答

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

+0

嗨拉爾斯,再次感謝你,是使用一個變量來保存「上一個當前行」,並使用上面的事件,我們可以通過向後選項卡以及向前獲取行更改(通過Tab鍵更改)。我們錯過的唯一的事情是,如果導航是通過箭頭鍵在「非編輯」模式下完成的,那麼這個編輯事件不會觸發。 Bummer,試圖查看是否有非編輯模式的類似技巧。 – peterc 2015-02-11 03:59:56

+0

你在你的問題中「可編輯」,所以我認爲這就是你要做的;無論如何,沒有這個更困難;我添加了一個方法來做到這一點,但...不是很漂亮(可能有錯誤,還沒有測試太多) – 2015-02-11 04:29:54

+0

嗨Lars,非常感謝!對不起,我在編輯或導航行更改後感到困惑。我將您的示例設置爲可編輯,並且上面的代碼可以在網格處於編輯或導航模式時檢測行更改。我會對它做一些測試,我只是在等待解決能夠使用Angular設置獲得網格實例(這是另一個問題,在這裏......嘆了口氣)。但是,感謝這一堆! – peterc 2015-02-11 12:15:18

0

This可能是你在找什麼。當您想要與數據相關的事件時,您必須查找DataSource事件。當你想要與UI相關的事件時,比看網格事件。

相關問題