在 JavaScript 中的 Telerik RadHTMLChart 中设置多行系列?

Set multiple line series in Telerik RadHTMLChart in JavaScript?

我已经尝试设置 Telerik RadHTMLChart following this setup (including specifying XAxis/YAxis, Series, etc), and I've used this Telerik documentation (包括允许图表定义自己的参数,请参阅下面的标记)以尝试动态设置数据源,但我无法获得要显示的图表。

单击按钮时,它会删除一个 class 在 div 上执行 display: none; 包装图形,然后调用 generateGraph() 函数:

this.generateGraph = function () {
    var newData = [];

    for (var i = 0; i < 10; i++) {
        var newPoint = {
            "Value": 2 * i,
            "Color": "Green"
        }
        newData.push(newPoint);
    }

    radGraph.set_dataSource(newData);
    radGraph.repaint();
}

但是发生了一些奇怪的事情:

  1. 图表不会显示,除非使用 Chrome 控制台源,我在 radGraph.repaint() 上放置了一个断点并手动 运行 radGraph.repaint() 命令。
  2. 这样做之后,没有显示任何数据点。
  3. 有几次我得到了一些值来显示(我什至不记得是如何显示的),多个点被一条线连接起来,就像在同一个系列中一样。

有人可以帮帮我吗?我使用的是 Telerik.Web.UI.dll 版本 2015.2.623.40.

这是标记:

<telerik:RadHtmlChart ID="radGraphChart" ClientIDMode="Static" runat="server">
    <PlotArea>
        <Series>
            <telerik:LineSeries DataFieldY="Value" ColorField="Color" >
            </telerik:LineSeries>
        </Series>
    </PlotArea>
</telerik:RadHtmlChart>

编辑: 我已经解决了#1 和#2 问题(#1 可能是 kendo 代码中的一个错误,它是 _loadData() 函数有 if(!u._isStockChart()){u._chartObject.refresh();}}else{u._chartObject.refresh();},其中一个 refresh() 调用应该是 redraw(),我很确定......#2 是我在某处打错了字),但我仍然不知道不知道如何将多个系列添加到图表中。

我想通了大部分。

1 + 2:

我不知道具体在哪里,但是在 Kendo 函数中它没有在它应该做的地方做 redraw()/repaint()/refresh() ,因为我对 repaint() 的第一次调用是加载数据、设置属性等等,但是有 _dataSourceChanged = false 而不是实际重绘,所以第二个 repaint() 调用有 _dataSourceChanged = true 然后重绘。

3:

标记应该在 <Series> 标签中有 2 个 <telerik:LineSeries> 标签,并且只有一个不同的 DataFieldY 属性:

<telerik:RadHtmlChart ID="radGraphChart" ClientIDMode="Static" runat="server">
    <PlotArea>
        <Series>
            <telerik:LineSeries DataFieldY="Value1">
            </telerik:LineSeries>
            <telerik:LineSeries DataFieldY="Value2">
            </telerik:LineSeries>
        </Series>
    </PlotArea>
</telerik:RadHtmlChart>

然后您可以参考在 JavaScript 中添加一个数据点,方法是: this.generateGraph = 函数 () { var newData = [];

for (var i = 0; i < 10; i++) {
    var newPoint = {
        "Value1": 2 * i,
        "Value2": 3 * i
    }
    newData.push(newPoint);
}

radGraph.set_dataSource(newData);
radGraph.repaint();
radGraph.repaint();