【问题标题】:Kendo grid aggregate error (count is not defined)剑道网格聚合错误(计数未定义)
【发布时间】:2017-12-13 13:12:57
【问题描述】:

我正在尝试使用剑道网格控件上的聚合功能。 但每次我得到下一个错误

未捕获的引用错误:未定义计数 错误

这里是演示demo

【问题讨论】:

    标签: kendo-ui kendo-grid kendo-mvvm


    【解决方案1】:

    答案在这里:https://www.telerik.com/forums/declarative-creation-of-grid-with-data-attribues-(footertemplate) 寻找丹尼尔的回应

    您必须更改您的 footerTemplate 以包含一个条件以避免在初始化期间由于事物的初始化方式尚未创建数据源的错误。

    将您的 footerTemplate 更改为

    footerTemplate: 'Total Count: #=data.UnitPrice ? data.UnitPrice.count : 0 #'
    

    它应该可以工作。

    演示:https://dojo.telerik.com/@Stephen/ADelIC

    【讨论】:

      【解决方案2】:

      互联网上针对此问题的解决方案都没有帮助我(包括此处接受的答案)。 我为数据源、聚合字段(如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,可以使用我的方法:

      1. 使用 JQuery 获取 DOM 元素,
      2. 循环它们并创建一个 JavaScript 对象数组
      3. 将数组作为dataSource.data 传递给网格
      4. 在 DOM 中隐藏或删除原始表格。

      附: 我没有尝试过网格行为当数据源使用传输时,即使用带有/不带服务器分页的 ajax,因此行为可能会有所不同,因为仅在整个数据的单页,也许我们必须从服务器返回这个聚合值(从未尝试过)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-09-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多