无法设置Kendo UI Grid DataSource

aw0*_*w04 2 ajax asp.net-mvc kendo-ui

我正在添加一个工作的Kendo UI网格,允许它根据从文本框传入的id进行更新.我从ajax调用我的控制器,一切都按预期工作,直到我尝试kendo.data.DataSource()在ajax成功中创建for my grid.该result预期我把它分配给数据源的外貌,但任何事情似乎并没有工作.数据没有显示任何内容,并且网格显示为空.

网格预期的模型与我的控制器中的模型匹配.我看过其他问题和剑道ui文档,但我似乎无法弄清楚我做错了什么...任何帮助将不胜感激.

阿贾克斯:

$.ajax({
    type: "POST",
    url: '@Url.Action("Search")',
    data: JSON.stringify({ id: id }),
    dataType: "json",
    contentType: "application/json; charset=utf-8",
    success: function (result) {
        var grid = $("#Grid").data("kendoGrid");
        var data = new kendo.data.DataSource(result);
        grid.dataSource.data(data);
        grid.refresh();
    }
});
Run Code Online (Sandbox Code Playgroud)

控制器:

public ActionResult Search([DataSourceRequest]DataSourceRequest request, string id)
{
    IEnumerable<SearchModel> data = GetData(id);

    return Json(data.ToDataSourceResult(request), JsonRequestBehavior.AllowGet);
}
Run Code Online (Sandbox Code Playgroud)

Sea*_*ase 10

您正在服务器上使用ToDataSourceResult()扩展方法,因此您需要使用result的Data属性来分配您在客户端上创建的DataSource对象的data属性.此外,您应该使用网格的setDataSource方法而不是grid.dataSource.data().最后,您要调用dataSource网格属性的read()方法,而不是grid.Refresh().

$.ajax({
    type: "POST",
    url: '@Url.Action("Search")',
    data: JSON.stringify({ id: id }),
    dataType: "json",
    contentType: "application/json; charset=utf-8",
    success: function (result) {
        var grid = $("#Grid").data("kendoGrid");
        var dataSource = new kendo.data.DataSource({
            data: result.Data
        });
        grid.setDataSource(dataSource);
        grid.dataSource.read();
    }
});
Run Code Online (Sandbox Code Playgroud)