具有 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 的剑道网格数据源的主要内容,如果未能解决你的问题,请参考以下文章