dataSource.changed イベントは機能していますか?
Kendo UI グリッドがインスタンス化された後、次のドキュメントに従って変更イベントをバインドします。
http://docs.kendoui.com/api/framework/datasource#change
//To set after initialization
dataSource.bind("change", function(e) {
// handle event
});
私はこれをやっています:
// initialize
$("#grid").kendoGrid({
dataSource: dataSource,
blah blah blah
)
});
// end of initialization
// bind afterwards
var grid = $('#grid').data('kendoGrid');
grid.dataSource.bind("change", function (e) {
dataChanged();
});
//also tried a setTimeout:
// bind afterwards
setTimeout(function () {
var grid = $('#grid').data('kendoGrid');
grid.dataSource.bind("change", function (e) {
dataChanged();
});
}, 350);
function dataChanged() {
// handle "change" whatever that means -- documentation definition is hazy
// does reassigning the data array constitute a change?
// does changing the value of a particular item in the data array
// constitute a change?
// does removing an item from the data array constitute a change?
var grid = $("#grid").data("kendoGrid");
grid.refresh();
}
しかし、次のいずれかを実行すると、dataChanged() 関数は呼び出されません。
var grid = $('#grid').data('kendoGrid');
grid.dataSource.data()[1]["deptname"] = 'XXX';
また
grid.dataSource.data = aDifferentArray;
「変更された」イベントが何をリッスンしているのか正確にはわかりません。正確には、何がそれを引き起こすはずですか?
完全に新しい dataSource を作成し、それを dataSource が既にあるグリッドに割り当てると、それが既存のデータ ソースの変更イベントをトリガーする方法がわかりません。そのようなイベント (dataSource が別のものに置き換えられたことにグリッドが気付く) は、dataSource レベルのイベントではなく、グリッド レベルのイベントですよね?