Kendo网格聚合错误(未定义计数)

时间:2017-12-13 13:12:57

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

我试图在kendo网格控件上使用聚合功能。 但每次我有下一个错误

  

未捕获的ReferenceError:未定义count   错误

以下是演示demo

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

Internet上有关此问题的解决方案都没有帮助我(包括此处已接受的答案)。 我为数据源指定了架构,聚合字段(由Telerik documentation提出),但仍然遇到相同的错误。这是我设法解决此问题的方法。首先介绍一些背景:

为了使网格能够执行聚合功能,创建网格后数据必须位于网格的数据源中

如果数据在DOM中(例如在表元素中),并且在此表上创建网格,则聚合函数将不起作用(不仅计数,而且还有最大值,最小值等),并且您将结束这个错误。请注意,网格本身将起作用,因为这是受支持的行为(我认为这称为DOM绑定)

您必须通过源绑定创建kendo网格,即在数据源中指定数据。

Telerik Documentation for source binding

工作示例(带有源绑定):

HTML:

use Illuminate\Auth\Notifications\VerifyEmail as VerifyEmailNotification;

class VerifyEmail implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    protected $user;

    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct($user)
    {
        $this->user = $user;
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        $this->user->notify(new VerifyEmailNotification);
    }
}

JavaScript:

<div id="myGrid"></div>

不起作用的示例(具有DOM绑定)->结尾为

未捕获的ReferenceError:未定义计数错误

HTML:

$("#myGrid").kendoGrid({
    sortable: true,
    dataSource: {
        data: [{
                Id: 1,
                Url: "https://stackoverflow.com/",
                Year: 2020,
                Status: "Active"
        }]
    }
    //Other configuration
});

JavaScript:

<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>

如果您不想更改DOM,则可以采用我的方法:

  1. 使用JQuery提取DOM元素
  2. 环绕它们并创建一个JavaScript对象数组
  3. $('#myGrid').kendoGrid({ sortable: true, // Other configuration }); 的形式将数组传递到网格
  4. 隐藏或从DOM中删除原始表。

P.S。 当数据源用于传输时,我还没有尝试过网格行为,即在有/无服务器分页的情况下使用ajax ,因此该行为可能有所不同,因为仅在整个数据的单个页面,也许然后我们必须从服务器返回此汇总值(从未尝试过tbh)。