0

我正在使用一个名为 JDASH 的框架来绘制浮动用户控件(实际上是更新面板),并且在其中我正在绘制高图。出于某种原因,有时当更新面板调整大小时,highcharts 无法在其中调整大小。我尝试调用调整大小:

var chartName = '<%= GetChartName() %>';
    $("#" + chartName.toString() + "_container").resize(function (e) {      
        //chartName.redraw();
    });

这在某些情况下会有所帮助,但在其他情况下不会调用此函数。关于如何强制highcharts重绘的任何想法?

谢谢, 奥马尔

4

2 回答 2

1
chart.series[0].setData(data,true);

setData方法本身会调用redraw方法

于 2013-10-28T15:09:21.290 回答
0

当单击 JDASH 元素的最大化按钮并使用以下方法修复它时,我们遇到了同样的问题:

JDash 元素的视图:

<div id="container" style="min-width: 310px; height: 400px; margin: 0 auto"></div>

JDash 元素的 javascript:

resize: function (event) {
      var container = $('.dashlet' + event.sender.id).find("#container");
      var chart = $(container).highcharts();

      chart.reflow();
}

希望它对将来的人有所帮助。

为了完整起见;可能是您将 dashlet 拖放到更小或更大的区域,这也应该调整图表的大小。如果是这样,您将需要此代码:

resize: function (event) {
    if (!event) { return true; }
    if (!event.sender) { return true; }

    var containerId;

    if (event.sender.id == "DDML_0") { // A dashlet container gets this class when it is being dragged.
        containerId = $(".dashlet" + event.args.pane.context.id);
    } else {
        containerId = $('.dashlet' + event.sender.id);
    }

    var container = $(containerId).find("#container");
    var chart = $(container).highcharts();

    if (!chart) { return true; }

    chart.reflow();

}

于 2016-11-09T13:18:20.613 回答