如何在Knockout foreach模板中使用Telerik RadHtmlChart

时间:2014-02-27 15:06:30

标签: javascript asp.net knockout.js telerik kendo-dataviz

当将一个Telerik RadHtmlChart放在一个Knockout foreach模板中时,我会遇到“Uncaught TypeError:无法设置未定义的属性'控件'”JavaScript错误,但前提是我包含runat =“server”(我想包括因为我希望我的C#codebehind配置控件。)

<tbody data-bind="foreach: Measures">
    <td class="trendCell">
        <div class="sparklineWrapper">
            <telerik:RadHtmlChart data-bind="attr: { id: 'sparkline_' + $index }" runat="server" Layout="Sparkline" class="sparkline" />
        </div>
    </td>
    ...

结论:如何在Knockout foreach模板中包含Telerik RadHtmlChart,同时仍然启用代码隐藏访问?

感谢您的时间。

特洛伊S.

P.S。对模板化控件进行数据绑定是另一个我尚未解决的问题。我之前已经将14个RadHtmlChart控件(每个都有一个唯一的静态ID)放到页面上,并在每次进行web api AJAX调用时手动对它们进行数据绑定,但我希望模板化控件具有挑战性。

解决:

经过几个小时的实验,我在Knockout foreach模板中成功使用了客户端(duh!)Kendo sparkline控件(而不是通过尝试使用服务器端Telerik迷你图控件来撞击墙头)。像魅力一样。

<div class="sparkline" data-bind="attr: { id: 'sparkline_' + $index() }"></div>
...
for (var i = 0; i < self.Items().length; i++) {
    // convert comma-delimited trend string into an int[] array
    var data = [ ];
    data.push.apply(data, self.Items([i].TrendData().split(",").map(Number));

    var id = "#sparkline_" + i;
    $(id).kendoSparkline(data);
}

0 个答案:

没有答案