剑道网格 (角度 2+) 无法过滤数字列



使用Kendo Plunker链接中的官方网格过滤示例,如果我为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)

如果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 是名称,即使它们由数字表示。(就像电话号码一样(。因此,您应该在此处使用字符串表示形式。

剑道网格过滤默认使用字符串。 您需要在筛选器中指定值的类型。 即:过滤器="日期",过滤器="数字">

最新更新