我正在使用带有详细信息子网格的剑道网格。不幸的是,我很难让它更新。我们为每个项目都有自己的自定义弹出编辑器(不是剑道的自定义版本,而是完全不同的弹出窗口,因为我们必须满足其他要求。)
完成 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
});
感谢您提供任何帮助。我将努力完成它。