使用来自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)
答案 0 :(得分:1)
如果d.ProductID
既不是null
,undefined
也不是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”