Kendo 网格聚合错误(计数未定义)
Kendo grid aggregate error (count is not defined)
我正在尝试在 kendo 网格控件上使用聚合功能。
但是每次我遇到下一个错误
Uncaught ReferenceError: count is not defined
error
这是演示demo
答案在这里:https://www.telerik.com/forums/declarative-creation-of-grid-with-data-attribues-(footertemplate)
寻找丹尼尔的回应
您必须更改您的 footerTemplate 以包含一个条件,以避免在初始化期间由于初始化方式而导致您的数据源尚未创建的错误。
将您的页脚模板更改为
footerTemplate: 'Total Count: #=data.UnitPrice ? data.UnitPrice.count : 0 #'
它应该可以工作。
None 互联网上针对此问题的解决方案对我有所帮助(包括此处接受的答案)。
我为数据源指定了模式,聚合字段(如 Telerik documentation 所建议的那样),但我仍然遇到同样的错误。这是我设法解决这个问题的方法。首先是一些背景:
为了让网格执行聚合函数,数据必须在创建网格时位于网格的数据源中
如果您的数据在 DOM 中(例如在 table 元素中)并且您在此 table 上创建网格,则聚合函数将不起作用(不仅count, but max, min, etc.) 你最终会遇到这个错误。请注意,网格本身会起作用,因为这是受支持的行为(我认为它称为 DOM 绑定)
您必须通过 源绑定 创建 kendo 网格,即在数据源中指定数据。
Telerik Documentation for source binding
工作示例(带源绑定):
HTML:
<div id="myGrid"></div>
JavaScript:
$("#myGrid").kendoGrid({
sortable: true,
dataSource: {
data: [{
Id: 1,
Url: "https://whosebug.com/",
Year: 2020,
Status: "Active"
}]
}
//Other configuration
});
示例无效(使用 DOM 绑定)-> 以
结尾
Uncaught ReferenceError: count is not defined error
HTML:
<table id="myGrid">
<tr>
<th>Id</th>
<th>Url</th>
<th>Year</th>
<th>Status</th>
</tr>
<tr>
<td>1</td>
<td>https://whosebug.com/</td>
<td>2020</td>
<td>Active</td>
</tr>
</table>
JavaScript:
$('#myGrid').kendoGrid({
sortable: true,
// Other configuration
});
如果不想改DOM可以按照我的方法:
- 使用 JQuery、
获取 DOM 个元素
- 循环它们并创建一个JavaScript对象数组
- 将数组作为
dataSource.data
传递到网格
- 从 DOM 中隐藏或删除原始 table。
P.S。
我没有尝试过 当数据源使用传输时的网格行为,即使用 ajax with/without 服务器分页,所以行为可能不同,因为它使仅在整个数据的单个页面上显示聚合值是没有意义的,也许我们必须 return 来自服务器的聚合值(从未尝试过 tbh)。
我正在尝试在 kendo 网格控件上使用聚合功能。 但是每次我遇到下一个错误
Uncaught ReferenceError: count is not defined error
这是演示demo
答案在这里:https://www.telerik.com/forums/declarative-creation-of-grid-with-data-attribues-(footertemplate) 寻找丹尼尔的回应
您必须更改您的 footerTemplate 以包含一个条件,以避免在初始化期间由于初始化方式而导致您的数据源尚未创建的错误。
将您的页脚模板更改为
footerTemplate: 'Total Count: #=data.UnitPrice ? data.UnitPrice.count : 0 #'
它应该可以工作。
None 互联网上针对此问题的解决方案对我有所帮助(包括此处接受的答案)。 我为数据源指定了模式,聚合字段(如 Telerik documentation 所建议的那样),但我仍然遇到同样的错误。这是我设法解决这个问题的方法。首先是一些背景:
为了让网格执行聚合函数,数据必须在创建网格时位于网格的数据源中
如果您的数据在 DOM 中(例如在 table 元素中)并且您在此 table 上创建网格,则聚合函数将不起作用(不仅count, but max, min, etc.) 你最终会遇到这个错误。请注意,网格本身会起作用,因为这是受支持的行为(我认为它称为 DOM 绑定)
您必须通过 源绑定 创建 kendo 网格,即在数据源中指定数据。
Telerik Documentation for source binding
工作示例(带源绑定):
HTML:
<div id="myGrid"></div>
JavaScript:
$("#myGrid").kendoGrid({
sortable: true,
dataSource: {
data: [{
Id: 1,
Url: "https://whosebug.com/",
Year: 2020,
Status: "Active"
}]
}
//Other configuration
});
示例无效(使用 DOM 绑定)-> 以
结尾Uncaught ReferenceError: count is not defined error
HTML:
<table id="myGrid">
<tr>
<th>Id</th>
<th>Url</th>
<th>Year</th>
<th>Status</th>
</tr>
<tr>
<td>1</td>
<td>https://whosebug.com/</td>
<td>2020</td>
<td>Active</td>
</tr>
</table>
JavaScript:
$('#myGrid').kendoGrid({
sortable: true,
// Other configuration
});
如果不想改DOM可以按照我的方法:
- 使用 JQuery、 获取 DOM 个元素
- 循环它们并创建一个JavaScript对象数组
- 将数组作为
dataSource.data
传递到网格
- 从 DOM 中隐藏或删除原始 table。
P.S。 我没有尝试过 当数据源使用传输时的网格行为,即使用 ajax with/without 服务器分页,所以行为可能不同,因为它使仅在整个数据的单个页面上显示聚合值是没有意义的,也许我们必须 return 来自服务器的聚合值(从未尝试过 tbh)。