将Kendo Grid绑定到Web API

时间:2013-07-30 08:44:06

标签: jquery asp.net-web-api kendo-ui datasource

我很感激帮助理解我试图使用Kendo数据源将数据从远程服务(WebAPI)绑定到Kendo Grid的问题。当我在Chrome中使用开发人员工具时,我可以看到正在调用该服务并返回json数据 - 问题是数据未呈现到网格中。

这是一个非常简单的页面的HTML,只包含网格:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>

    <link href="css/kendo.common.min.css" rel="stylesheet" />
    <link href="css/kendo.default.min.css" rel="stylesheet" />

    <script src="lib/jquery.min.js"></script>
    <script src="lib/kendo.web.min.js"></script>

</head>
<body>

    <div id="reportGrid"></div>

    <script>

        $(document).ready(function ()
        {
            // Report datasource
            var reportsDataSource = new kendo.data.DataSource({

                // Transport
                transport: {
                    read: {
                        url: "http://localhost:54363/api/report",
                        dataType: "jsonp",
                        jsonpCallback: "reportCallback"
                    }
                },

                // Schema
                schema: {
                    model: {
                        fields: {
                            SerialNumber: { type: "string" },
                            Version: { type: "number" },
                            DateReceived: { type: "date" },
                            Title: { type: "string" }
                        }
                    }
                }
            });


            $("#reportGrid").kendoGrid(
            {
                dataSource: reportsDataSource
            });


        });

    </script>

</body>
</html>

当页面加载时,调用Web服务并检索JSON(我使用JSONP,因为站点和服务位于不同的域中)。调用该服务并检索以下JSON(我通过检查Chrome中的响应来获取此信息)。

[{"SerialNumber":"1","Version":2,"DateReceived":"2013-08-01T16:01:12.5828003+01:00",...

我真的不明白为什么网格没有填充。

4 个答案:

答案 0 :(得分:1)

如果您已按照说明here进行操作,则应该可以执行此操作。

答案 1 :(得分:0)

此处有一个示例Web站点显示Web API绑定:https://github.com/telerik/kendo-examples-asp-net/tree/master/grid-webapi-crud

也许这会帮助你前进。

答案 2 :(得分:0)

我开始使用odata,它开始按预期工作了。潜在的错误与Web服务中返回的JSON没有正确格式化有关 - 虽然在我的生活中我无法弄清楚服务返回的内容有什么问题。

答案 3 :(得分:0)

我遇到了同样的问题。

要修复它,只需将“data”属性添加到架构,其中检查您获取值的格式。很可能你有一些包装Data对象的东西,你只需要返回项目列表。

schema: {
    data: function (response) {
        return response.Data;
    }
},

P.S。有时我只是讨厌弄清楚Kendo UI的这些可选但重要的属性需要多少时间。我希望他们的文件更好。