0

我已经尝试在此设置之后设置Telerik RadHTMLChart (包括指定 XAxis/YAxis、Series 等),并且我使用了这个 Telerik 文档(包括允许图表定义自己的参数,请参阅下面的标记)尝试动态设置数据源,但无法显示图表。

当一个按钮被点击时,它会删除一个display: none;在 div 包装图形上的类,然后调用该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. radGraph.repaint()除非我使用 Chrome 控制台源代码放置断点并手动运行该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 可能是剑道代码中的一个错误,它的_loadData()函数if(!u._isStockChart()){u._chartObject.refresh();}}else{u._chartObject.refresh();}应该有一个refresh()调用 be redraw(),我很确定...... #2 是我在某处打错字),但我仍然不知道如何在图表中添加多个系列。

4

1 回答 1

0

我想通了大部分。

1 + 2:

我不知道确切的位置,但是在剑道功能中,它没有在应该做的地方做redraw()// repaint(),因为我的第一次调用是加载数据,设置属性,等等,等等,但实际上并没有重绘,所以第二个调用有然后进行重绘。refresh()repaint()_dataSourceChanged = falserepaint()_dataSourceChanged = true

3:

标记中应该有 2 个<telerik:LineSeries>标签<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();
于 2016-08-24T20:38:08.673 回答