用JavaScript在Telerik RadHTMLChart中设置多个系列?

时间:2016-08-24 19:35:30

标签: javascript telerik radhtmlchart

我已经尝试设置Telerik RadHTMLChart following this setup(包括指定XAxis / YAxis,Series等),我使用了this Telerik documentation (包括允许图表定义自己的参数,请参阅下面的标记)尝试动态设置数据源,但我无法显示图表。

单击某个按钮时,会删除在包装图形的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. 我已经获得一些值的时间(我甚至不记得如何),多个点由一条线连接,就像在同一系列中一样。
  4. 有人可以帮帮我吗?我正在使用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可能是剑道代码中的一个错误,它的_loadData()函数有if(!u._isStockChart()){u._chartObject.refresh();}}else{u._chartObject.refresh();}应该有一个refresh()调用是redraw(),我很确定......#2是我在某个地方犯了一个错字),但我仍然不知道如何添加多个系列'图表。

1 个答案:

答案 0 :(得分:0)

我认为大部分都是。

1 + 2:

我不确切知道究竟在哪里,但在Kendo函数中它没有redraw() / repaint() / refresh()在它应该的地方,因为我第一次打电话给repaint()正在加载数据,设置属性,等等,等等,但是_dataSourceChanged = false并且实际上没有重绘,因此第二个repaint()调用具有_dataSourceChanged = true,然后进行重绘

3:

标记应在<telerik:LineSeries>标记中包含2个<Series>标记,并且只有不同的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 = function(){     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();