我正在使用MVC kendo marster详细网格模式,其中我的详细网格具有添加新行的功能。在每行添加后,我保留父网格的状态(列,页面,页面大小,排序,过滤和分组等),并调用datasource.read()重新加载主网格数据并将主网格状态应用回网格这样用户就不必再次重新应用任何过滤器,寻呼机等,以便到达他/她重新加载数据之前的页面。
毕竟,我正在尝试扩展添加详细行数据的行。我确实有主细节行id但无法访问网格行,以便我可以执行expandrow操作。
我的详细行网格在ajax表单中,我在onTeccess事件的详细行上执行主网格数据源读取操作。
以下是详细行网格的onSuccess事件
onSuccessTask: function (data, textStatus, jqXHR) {
if (data.status === "error") {
toastr.error(data.message);
return;
}
else {
$("#ModalWindow").data("kendoWindow").close();
toastr.success('Operation completed!');
refreshGrid();
var taskKey = data.taskKey;
if (taskKey.length) {
var dataItem = $('#grid').data("kendoGrid").dataSource.get(taskKey);
var row = $("#grid").data("kendoGrid").tbody.find("tr[data-uid='" + dataItem.uid + "']");
}
}
},
refreshGrid调用如下
refreshGrid: function () {
var tGrid = $('#grid').data("kendoGrid");
var gridDataSource = tGrid.dataSource;
var gridState = {
columns: gridDataSource.columns,
page: gridDataSource.page(),
pageSize: gridDataSource.pageSize(),
sort: gridDataSource.sort(),
filter: gridDataSource.filter(),
group: gridDataSource.group()
};
$('#grid').data("kendoGrid").dataSource.data([]);
$('#grid').data("kendoGrid").dataSource.read();
//$('#grid').data("kendoGrid").refresh;
var tGridOptions = $('#grid').data("kendoGrid").options;
tGridOptions.columns = gridState.columns;
tGridOptions.dataSource.page = gridState.page;
tGridOptions.dataSource.pageSize = gridDataSource.pageSize;
tGridOptions.dataSource.sort = gridDataSource.sort;
tGridOptions.dataSource.filter = gridState.filter;
tGridOptions.dataSource.group = gridState.group;
},
到目前为止,一切都顺利进行,但是当我尝试通过其列值从dataSource检索dataItem时,它返回null,原因是dataSource i-e。主网格的读取操作尚未完成。可以请任何人推荐任何解决此问题的方法吗?
var dataItem = $('#grid').data("kendoGrid").dataSource.get(taskKey);
如果我在上述所有解释之后总结了我的问题,那么将如下
如何在对数据执行任何操作之前等待MVC kendo网格数据源读操作完成?