Kendo Grid(Angular 2+)无法过滤数字列

时间:2017-08-03 17:31:42

标签: angular kendo-grid filtering

使用来自Kendo Plunker link的官方网格过滤示例,如果我为ProductID字段启用过滤器,则过滤器不起作用,我在控制台中看到以下错误。基本上,没有编号的列过滤器工作。但是,如果数据类型是字符串,则可以正常工作。

错误:

ERROR TypeError: (d.ProductID || "").toLowerCase is not a function
    at eval (eval at t.compileFilter (VM1859 kendo-data-query.js:NaN), <anonymous>:3:29)
    at Object.t.count (VM1859 kendo-data-query.js:1)
    at Object.t.process (VM1859 kendo-data-query.js:1)
    at AppComponent.dataStateChange (VM1970 app.component.ts!transpiled:22)
    at Object.eval [as handleEvent] (VM1971 AppComponent.ngfactory.js:23)
    at handleEvent (VM856 core.umd.js:12108)
    at callWithDebugContext (VM856 core.umd.js:13567)
    at Object.debugHandleEvent [as handleEvent] (VM856 core.umd.js:13155)
    at dispatchEvent (VM856 core.umd.js:8720)
    at eval (VM856 core.umd.js:10882)

2 个答案:

答案 0 :(得分:1)

如果d.ProductID既不是nullundefined也不是string类型,则会引发错误,例如如果d.ProductID = 12。我假设在你的例子中id是类型号。

我不熟悉这个库,但是如果你看一下这些例子,他们确实有一个数值过滤器:

<kendo-grid-column field="UnitPrice" title="Unit Price" width="180" filter="numeric" format="{0:c}">

id应该表示为字符串而不是整数。根据经验,如果算术运算有意义,则只应使用整数;例如如果你可以添加两个实例。 ID是名称,即使它们由数字表示。 (就像电话号码一样)。因此,您应该在此处使用字符串表示。

答案 1 :(得分:0)

Kendo Grid过滤默认使用字符串。 您需要在过滤器中指定值的类型。 即:filter =“ date”,filter =“ numeric”