2 つの列を表示する単純な (少なくともそれが目標だった) 剣道 UI グリッドを実装しています。checkbox列には単純なテンプレートがあり、のが更新されるようchange() eventにcheckboxが処理されます。私はこれを確認しました、そしてそれは動作します。modeldatasource
データ ソースは 用に構成されており、 および 用に定義batchされています。どちらも ajax 呼び出しを実行する関数を呼び出します。前に言ったように、関数は期待どおりに処理されます。ただし、 で定義されている関数はそうではありません。データソースのは、 (または)を呼び出す関数にイベントがフックされた単純なボタンでトリガーされます。transportreadupdatereadupdatetransportsync()clickdatasource.sync()grid.saveChanges()
transport: {
read: function(options) {
return loadStuff(options);
},
update: function (options) {
return updateStuff(options);
}
}
Kendo UI コードでデバッグすると、ModelSet のモデル属性が常に空のように見えるため、sync()同期するものがないと判断されます。ここで何が起こっているのか、誰にもわかりませんか?
更新:checkチェックボックス/
を処理するときに何か問題があるようですuncheck。どうやら私は次のようなものを使用する必要があります
$('#divGrid').on('click', '.chkbx', function() {
var checked = $(this).is(':checked');
var grid = $('#divGrid').data().kendoGrid;
var dataItem = grid.dataItem($(this).closest('tr'));
dataItem.set("Selected", checked);
});
残念ながら、set()データ項目にメソッドが定義されていないようです。デバッグ時には、 のみが含まれ、メソッドdataを持つ Model オブジェクトは含まれません。set()
更新 2:
で定義されたモデルで ajax 呼び出しから返されたデータをラップしようとしましたModel.define()。モデルの _modified プロパティがtrue. ただし、ModelSet のモデル配列は空のままです。これは Kendo UI のバグですか、それとも間違った方向に進んでいますか?