7

ASP.NETサイトでのHighCharts2.2.3の使用。コード例については、 http://jsfiddle.net/wergeld/TDLvc/を参照してください。私のサイトの設定は、jsFiddleが示すものとは少し異なります。シリーズを変更する私の関数は、含まれているJSファイルに存在し、関数の呼び出しは、チャート作成JSコードと「インライン」ではありません(ただし、ドキュメント対応のjqueryにラップされています)。

私には2つの問題があり、そのうちの1つはjsFiddleで見ることができます。1)チャートタイプを変更すると、yAxisの指定が失われるように見えます。元々2つのyAxisがあり、チャートタイプを変更すると、上の軸には値ラベルがなくなります(つまり、チャートデータは下の軸(最初のyAxis)のみを使用します)。2)これをFFまたはIEで実行すると、次の呼び出し行でエラーが発生します。

data: serie.options.data

エラーは次のとおりです。cはhighcharts.jsの55行目のコンストラクターではありません(これは最小化されたファイルです)。

highcharts.src.jsを使用すると、エラーが次のようになっていることがわかります。typeClassはコンストラクターではありません

これは、src.jsの8789行目にあります。serie= new typeClass();

更新されたjsFiddleを参照してください:チャートタイプとしてポイントを選択します: http: //jsfiddle.net/wergeld/nS4Ny/1/。これにより、そのエラーがスローされます。

4

2 に答える 2

7

この問題は、ドロップダウン値の大文字化です。チェックを次のように変更しました。

newType = newType.toLowerCase();

チャートタイプの変更が大幅に有効になりました。完全なコード:

function changeType(chart, series, newType) {
        newType = newType.toLowerCase();
        for (var i = 0; i < series.length; i++) {
            series = series[0];
            try {
                series.chart.addSeries({
                    type: newType,
                    stack: series.stack,
                    yaxis: series.yaxis,
                    name: series.name,
                    color: series.color,
                    data: series.options.data
                },
                false);
                series.remove();
            } catch (e) {
                alert(newType & ': ' & e);
            }
        }
    }
于 2012-05-21T13:43:48.197 に答える
0

これに遭遇した人は誰でも...チャートシリーズを最後から最初に削除する必要があります。また、最後のシリーズで再描画することを忘れないでください。そうしないと、変更が表示されません:)

function changeChartType(chart, type, redraw) {
    var seriesOptions = new Array(chart.series.length);
    for (var i = 0; i < chart.series.length; i++) {
        var series = chart.series[i];
        seriesOptions[i] = {
            type: type,
            name: series.name,
            color: series.color,
            dashStyle: series.options.dashStyle,
            lineWidth: series.options.lineWidth,
            marker: series.options.marker,
            dataLabels: series.options.dataLabels,
            enableMouseTracking: series.options.enableMouseTracking,
            data: series.options.data,
            isRegressionLine: series.options.isRegressionLine
        };
    }
    for (var i = chart.series.length - 1; i >= 0; i--) {
        chart.series[i].destroy();
    }
    for (var i = 0; i < seriesOptions.length; i++) {
        var newSeries = chart.addSeries(seriesOptions[i], redraw && i == seriesOptions.length - 1);
    }
    chart.currentType = type;
}
于 2015-03-11T15:10:34.590 に答える