Telerik は最近、コード ライブラリに回避策を投稿しました: http ://www.kendoui.com/code-library/mvc/grid/save-all-changes-with-one-request.aspx 。残念ながら、回避策はかなり必要最小限です。これは、破棄された、ダーティな、および新しいレコードをキャプチャする方法の良い例ですが、応答のエラーを処理し、成功時にデータ ソースを同期するために手を振って終了します。また、ajax リクエストを行う前に、破棄された、ダーティな、または新しいレコードがあることを確認するチェックがないことにも注意してください。
関連するコードは次のとおりです。上記のリンクから完全な例をダウンロードして、グリッドのセットアップ方法を確認し、最新バージョンであることを確認してください。
function sendData() {
var grid = $("#Grid").data("kendoGrid"),
parameterMap = grid.dataSource.transport.parameterMap;
//get the new and the updated records
var currentData = grid.dataSource.data();
var updatedRecords = [];
var newRecords = [];
for (var i = 0; i < currentData.length; i++) {
if (currentData[i].isNew()) {
//this record is new
newRecords.push(currentData[i].toJSON());
} else if(currentData[i].dirty) {
updatedRecords.push(currentData[i].toJSON());
}
}
//this records are deleted
var deletedRecords = [];
for (var i = 0; i < grid.dataSource._destroyed.length; i++) {
deletedRecords.push(grid.dataSource._destroyed[i].toJSON());
}
var data = {};
$.extend(data, parameterMap({ updated: updatedRecords }), parameterMap({ deleted: deletedRecords }), parameterMap({ new: newRecords }));
$.ajax({
url: "/Home/UpdateCreateDelete",
data: data,
type: "POST",
error: function () {
//Handle the server errors using the approach from the previous example
},
success: function () {
alert("update on server is completed");
grid.dataSource._destroyed = [];
//refresh the grid - optional
grid.dataSource.read();
}
})
}