【问题标题】:KendoUI grid doesn't work with JSONKendoUI 网格不适用于 JSON
【发布时间】:2013-12-17 13:34:55
【问题描述】:

我正在尝试将 KendoUI(没有服务器包装器)集成到我的 ASP.NET MVC 应用程序中:

这是 HTML 文件(仅需要代码):

<div id="example" class="k-content">
    <div id="clientsDb">
        <div id="grid" style="height: 380px"></div>
    </div>

    <script>
        $(document).ready(function () {
            $("#grid").kendoGrid({
                dataSource: {
                    type           : "json",
                    transport      : {
                        read       : {
                            url     : "data.json",
                            type    : "POST",
                            dataType: "json"
                        },
                        contentType: "application/json"
                    },
                    schema         : {
                        data : "data",
                        total: "total"
                    },
                    pageSize       : 10,
                    serverPaging   : true,
                    serverFiltering: true,
                    serverSorting  : true
                },
                height    : 430,
                groupable : false,
                sortable  : false,
                pageable  : true,
                columns   : [
                    {
                        field: "PageUrl",
                        title: "PageUrl",
                        width: 140
                    },
                    {
                        field: "Id",
                        title: "Id",
                        width: 190
                    }
                ]
            });
        });
    </script>
</div>

这是“MyContollerName”的“ActionMethodName”方法返回的 JSON 结果:

{
    "Data" : [
        { "Id"     : 30, "PageUrl": "http://www.someurl.com" },
        { "Id"     : 29, "PageUrl": "http://www.someurl.com/" },
        { "Id"     : 26, "PageUrl": "http://www.someurl.com" }
    ],
    "Total": 10
}

但是没有渲染任何东西(渲染了网格,没有渲染结果)。获得无限渲染的“加载”图标。有人可以帮忙吗?

我还收到以下 JS 错误:“TypeError: Cannot call method 'slice' of undefined /Scripts/kendo/2013.3.1119/kendo.web.min.js:13”

【问题讨论】:

  • 有没有影响到你的行动?你试过在上面设置断点吗?
  • 是的,action方法被调用,JSON结果返回给客户端。通过断点和 fiddler2 测试

标签: asp.net asp.net-mvc asp.net-mvc-4 kendo-ui kendo-grid


【解决方案1】:

在您定义的架构中,当您以大写形式返回数据时,数据的格式为 data(小写)。

将架构更改为:

schema         : {
    data : "Data",
    total: "total"
},

它会起作用的。

【讨论】:

  • 是的正确答案,我花了一些时间才找到它。一个好的做法也是定义模型,如:model: { id: 'Id', fields: { Id: { type: 'number' }, PageUrl: { type: 'string' } } }
  • 太棒了!非常感谢!我永远找不到它
  • @Stef,确实如此。如果@and.maz 计划使其可编辑,他将需要声明schema.model
猜你喜欢
  • 2012-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-06
  • 2013-12-28
  • 1970-01-01
相关资源
最近更新 更多