Kendo ui 使用OData、弹出窗口和Durandal.js刷新KendoUI网格

Kendo ui 使用OData、弹出窗口和Durandal.js刷新KendoUI网格,kendo-ui,odata,kendo-grid,asp.net-mvc-5,durandal-2.0,Kendo Ui,Odata,Kendo Grid,Asp.net Mvc 5,Durandal 2.0,虽然我以前见过这种错误的各种版本,但我还没有看到涉及Durandal的版本,这就是我认为一些问题的根源 我有一个KendoUI表格,其中显示了许多费用,我使用Durandal消息框添加新费用,其想法是在提交新费用时,表格应该刷新 现在,有几个人提到了以下“解决方案”: 不幸的是,这似乎不起作用。当我使用弹出窗口时,因为我使用Durandal,我刷新网格的代码仍然在网格所在的页面中,因为Durandal的promise方法 app.showDialog('viewmodels/empresas/e

虽然我以前见过这种错误的各种版本,但我还没有看到涉及Durandal的版本,这就是我认为一些问题的根源

我有一个KendoUI表格,其中显示了许多费用,我使用Durandal消息框添加新费用,其想法是在提交新费用时,表格应该刷新

现在,有几个人提到了以下“解决方案”:

不幸的是,这似乎不起作用。当我使用弹出窗口时,因为我使用Durandal,我刷新网格的代码仍然在网格所在的页面中,因为Durandal的promise方法

app.showDialog('viewmodels/empresas/egreso/addEgreso').then(function () {
    //the method called that uses the code above to attempt to refresh the grid
    refreshGrid();
});
每次它到达refreshGrid方法时,都会返回一个错误,表示未定义“grid”。在向数据库添加新项后,如何访问grid属性以刷新它


非常感谢您的帮助。

我建议将网格指定给网格属性对象中的可观察对象:

视图:

div data bind=“kendoGrid:myGrid”>/div

视图模型:

var myGridObservable=ko.observable()

var myGrid={ 小部件:myGridObservable, 数据:空, 数据源:{

然后将myGridObservable传递给您的视图,您可以执行以下操作:

myGrid().dataSource.read()


这是一个输入错误吗?你说的是var grid=$(“grid”).data(“kendoGrid”);但在我看来,它应该是var grid=$(“#grid”).data(“kendoGrid”);这实际上只是问题中的一个输入错误,我的源代码应该有$(“#grid”)。我修改了这个问题以反映这一点。你确认jQuery确实找到了元素#grid吗?(例如,
console.log($(“#网格”).length);
)。您如何将数据插入网格连接的数据源?您是否尝试将数据源声明与网格分离。我对durandel不太了解,但我想有一种方法可以将数据源分配给某些范围内属性。然后,您可以调用read或直接获取数据源。
app.showDialog('viewmodels/empresas/egreso/addEgreso').then(function () {
    //the method called that uses the code above to attempt to refresh the grid
    refreshGrid();
});