詳細サブグリッドを持つ剣道グリッドを使用しています。残念ながら、更新するのに苦労しています。各アイテムに独自のカスタム ポップアップ エディターがあります (剣道のカスタム バージョンではなく、満たさなければならない他の要件があったため、まったく異なるポップアップです)。
ajax 呼び出しが完了した後のポップアップの保存ボタンは、次のコールバックを使用してグリッドを更新します。これは機能していないようです。詳細セクションのアイテムの更新をテストしました。グリッドは完全に折りたたまれています。エラーはありませんが、グリッドを再展開しても、問題のアイテムは変更されていません。ただし、グリッドを完全に閉じて、グリッドを再度開くと機能します。
function refreshData() {
if (!settings.dataUrl)
return;
$.ajax({
type: "POST",
url: settings.dataUrl,
data: new Object(),
dataType: "json",
contentType: "application/json"
}).done(function (data, textStatus, jqXhr) {
// Perform mapping function on data
if (settings.mapperFunction) {
data = settings.mapperFunction(data, settings.pageSettings);
}
var dataForGrid = data;
if (settings.transformGridDataCallback)
dataForGrid = settings.transformGridDataCallback(JSON.parse(JSON.stringify(dataForGrid)));
settings.unfilteredTotal = dataForGrid.Data.Data.length;
outterGridDataSource.data = dataForGrid.Data.Data;
outterGridDataSource.read();
});
};
サブグリッドの DetailInit を定義するサンプル コードを次に示します。
detailInit: function (e) {
var innerColumns = [
...column definitions
];
var $detail = $("<div />").addClass("grid_detail class");
$detail.append($("<div />").addClass("grid inner_grid"));
//#region Problems Details
$detail.find(".inner_grid").kendoGrid({
scrollable: false,
editable: false,
dataSource: {
data: e.data.subItems,
transport: { //need this for Kendo Grid to handle updates properly
read: function (o) {
o.success(e.data.subItems);
},
create: function (o) {
},
update: function (o) {
},
destroy: function (o) {
o.success();
}
},
schema: {
model: {
id: "Id",
fields: {
display: { defaultValue: settings.pageSettings.stringvalue1 }
}
}
}
},
columns: innerColumns
});
ご協力ありがとうございます。私はそれを終わらせるためにこれに取り組んでいます。