Highcharts resize并不总是有效

时间:2013-10-28 15:06:25

标签: javascript jquery asp.net highcharts

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

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

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

谢谢, 奥马尔

2 个答案:

答案 0 :(得分:1)

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

setData方法本身会调用redraw方法

答案 1 :(得分: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();
}

希望将来帮助某人。

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

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();

}