【发布时间】:2014-10-06 02:42:53
【问题描述】:
我已经使用以下设置了剑道网格:
- 带有 oDataController 的 ASP.NET Web API 使用 oData 格式读取数据。
- 带有 oData 数据源的 Kendo 网格,带有服务器端分页、过滤和排序。
一切都按预期工作,除了过滤不能完全使用十进制类型的列。在对十进制类型列使用过滤时,kendo 会生成具有以下过滤值的 URL:
$filter=Value gt 0.5
Web API 返回 Bad Request 并带有以下内容:
{
"odata.error":{
"code":"","message":{
"lang":"en-US","value":"A binary operator with incompatible types was detected. Found operand types 'Edm.Decimal' and 'Edm.Double' for operator kind 'GreaterThan'."
}
}
}
如果我获取 URL 并在 0.5 末尾添加“M”以明确指定小数类型,那么它可以正常工作。显然,在使用 Web API oData 过滤时,对于诸如十进制、双精度、日期时间等某些类型,您必须根据本文在 URL 中明确指定类型:http://microliteorm.wordpress.com/2013/09/06/webapi-odata-filtering/
在指定网格中的列类型方面,数字只有一种类型,即“数字”。它没有双精度、十进制、整数等不同的类型。当对“数字”列使用过滤时,如何告诉 Kendo 网格在 URL 中指定实际类型(即双精度、十进制等)。请注意,过滤适用于日期时间类型。这只是数字类型的问题。
编辑: 在 oData 上找到这篇文章(第 6 节),它指定了原始数据类型必须如何在 URI 中表示 - http://www.odata.org/documentation/odata-version-2-0/overview/
【问题讨论】:
-
哎呀,也遇到了这个问题。你找到解决方法了吗?我不想做一些疯狂的字符串替换或在我的过滤器文本末尾添加“m”的东西。
-
我也被这个问题困住了......
标签: kendo-ui kendo-grid kendo-asp.net-mvc