具有 OData 格式 = json 的剑道网格数据源

Posted

技术标签:

【中文标题】具有 OData 格式 = json 的剑道网格数据源【英文标题】:kendo Grid DataSource with OData format = json 【发布时间】:2014-01-04 22:55:23 【问题描述】:

我们有 asp.net web api 支持 OData 格式的服务,例如 application/json;odata=fullmetadata

此服务与 WCF 数据服务客户端JayData

配合得很好

但我们的响应似乎与我们的剑道网格数据源

不兼容

我已经调查了响应,这里是不同之处:

运行良好的 kendoUI 站点演示有以下响应:

"__count": "91"

而响应内容类型为:text/javascript;charset=utf-8

您可以在以下位置查看剑道 UI 演示的示例:

http://demos.kendoui.com/web/grid/index.html

这是我们的回应:

"odata.metadata":"http://localhost:2452/odata/$metadata#VehicleGroups","odata.count":"29","value":[

并且响应内容类型为:application/json; odata=fullmetadata; charset=utf-8

我可以有一个生成所需格式的 ODataMediaTypeFormatter 吗? 或者有什么解决方案可以让 KendoDataSource 与我们当前的响应一起工作? 任何其他解决方案表示赞赏。

请注意,我们已使用 type: "odata" 为 KendoDataSource 启用 OData

谢谢

【问题讨论】:

【参考方案1】:

这是因为 KendoUI 仍以 OData V2 格式进行通信,并且您的服务器使用 OData V3 运行。

要解决此问题,您可以在服务器端使用 V2,或通过将以下配置添加到数据源对象来优化 KendoUI 传输处理响应的方式:

            schema: 
                data: function (data) 
                    return data.value;
                ,
                total: function (data) 
                    return data['odata.count'];
                
            ,

所以 kendo grid 会理解 total 将位于响应的 totalCount 部分而不是 "__count"

【讨论】:

以上是关于具有 OData 格式 = json 的剑道网格数据源的主要内容,如果未能解决你的问题,请参考以下文章

日期格式在重新加载剑道网格时重置

剑道网格日期格式

具有内联可编辑列表的剑道网格

剑道网格导出日期格式不正确

剑道网格导出到 Excel 货币格式

欧元格式剑道网格列 Angular JS