【发布时间】:2017-12-13 13:12:57
【问题描述】:
【问题讨论】:
标签: kendo-ui kendo-grid kendo-mvvm
【问题讨论】:
标签: kendo-ui kendo-grid kendo-mvvm
答案在这里:https://www.telerik.com/forums/declarative-creation-of-grid-with-data-attribues-(footertemplate) 寻找丹尼尔的回应
您必须更改您的 footerTemplate 以包含一个条件以避免在初始化期间由于事物的初始化方式尚未创建数据源的错误。
将您的 footerTemplate 更改为
footerTemplate: 'Total Count: #=data.UnitPrice ? data.UnitPrice.count : 0 #'
它应该可以工作。
【讨论】:
互联网上针对此问题的解决方案都没有帮助我(包括此处接受的答案)。 我为数据源、聚合字段(如Telerik documentation 建议的那样)指定了架构,但我仍然遇到同样的错误。这是我设法解决这个问题的方法。先介绍一下背景:
为了让网格执行聚合功能,数据必须在网格创建时位于网格的数据源中
如果您的数据在 DOM 中(例如在表格元素中)并且您在此表格上创建了网格,则聚合函数将不起作用(不仅是计数,还有 max、min 等)并且您将结束解决这个错误。请注意,网格本身会起作用,因为这是受支持的行为(我认为它称为 DOM 绑定)
您必须通过源绑定创建剑道网格,即在数据源中指定数据。
Telerik Documentation for source binding
工作示例(使用源绑定):
HTML:
<div id="myGrid"></div>
JavaScript:
$("#myGrid").kendoGrid({
sortable: true,
dataSource: {
data: [{
Id: 1,
Url: "https://stackoverflow.com/",
Year: 2020,
Status: "Active"
}]
}
//Other configuration
});
无效示例(使用 DOM 绑定)-> 以
结尾Uncaught ReferenceError: count is not defined 错误
HTML:
<table id="myGrid">
<tr>
<th>Id</th>
<th>Url</th>
<th>Year</th>
<th>Status</th>
</tr>
<tr>
<td>1</td>
<td>https://stackoverflow.com/</td>
<td>2020</td>
<td>Active</td>
</tr>
</table>
JavaScript:
$('#myGrid').kendoGrid({
sortable: true,
// Other configuration
});
如果您不想更改 DOM,可以使用我的方法:
dataSource.data 传递给网格
附: 我没有尝试过网格行为当数据源使用传输时,即使用带有/不带服务器分页的 ajax,因此行为可能会有所不同,因为仅在整个数据的单页,也许我们必须从服务器返回这个聚合值(从未尝试过)。
【讨论】: