当将一个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);
}