2017-03-22 4 views
0

私は動的データでドリルダウンする必要があるグラフを作成しています。最初に、静的なドリルダウンデータをロードしようとしましたが、グラフは完全に正常に機能しました。しかし、データを動的にロードする必要があります。そのために、JSON呼び出しを使用して、指定された「ポイント名」(選択した円グラフの点)を持つサーバーからデータをフェッチしています。最初に読み込むときに、円グラフでシリーズデータを表示するようにうまくいきます。しかし、私は円グラフオブジェクトをクリックしているときにサーバーコールを受け取り、JSONレスポンスとしてデータを取得しますが、円グラフは更新されません。また、私はナビゲーションを保つ必要があるので、いつでもどこでも進めることができます。ハイチャートでJSON呼び出しを使用してデータを動的にロードする方法円グラフをドリルダウンしますか?

私は以下のコードを使用していますが、複数のレベルの円グラフとしては機能していません。誰でも同じことをしていますか?以下のコードを見直してください。

 var options = { 
      chart: { 
       renderTo: 'chart_divDrillDownGraph', 
       type: 'pie', 
       events: { 
        drilldown: function (e) { 
         if (!e.seriesOptions) { 
          if (!e.seriesOptions) { 
           $.get("http://localhost:54877/GetStats.aspx?key=drilldownGraph&selectedPointName=" + e.point.name, function (data) { 
            this.addSeriesAsDrilldown(e.point, data); 
           }); 
          } 
         } 
        } 
       } 
      }, 
      title: { 
       text: 'Report of March 2017' 
      }, 
      subtitle: { 
       text: 'Click the slices to view details.' 
      }, 
      plotOptions: { 
       series: { 
        dataLabels: { 
         enabled: true, 
         format: '{point.name}: {point.y:.1f}<span style="unicode-bidi: bidi-override;">%</span>' 
        } 
       } 
      }, 

      tooltip: { 
       headerFormat: '<span style="font-size:11px">{series.name}</span><br>', 
       pointFormat: '<span style="color:{point.color}">{point.name}</span><span style="unicode-bidi: bidi-override;">: <b>{point.y:.2f}%</b> of total</span><br/>' 
      }, 
      series: [{}], 

      drilldown: { 
      } 
     }; 

     if (this.name != "undefined" && this.name != null) 
      selectedlevelName = this.name; 
     else 
      selectedlevelName = ""; 

     var url = "http://localhost:54877/GetStats.aspx" + "?key=drilldownGraph&selectedPointName=" + selectedlevelName; 
     $.getJSON(url, function(data) { 
      options.series[0].data = data; 
      var chart = new Highcharts.Chart(options); 
     }); 

しかし、私は、私は、このキーワードはを参照していないAJAX要求で http://code.highcharts.com/highcharts.js http://code.highcharts.com/modules/drilldown.js

enter image description here

答えて

0

高チャートの以下のJSを使用していますエラー

TypeError: this.addSeriesAsDrilldown is not a function

の下に取得していますチャート。あなたはajax呼び出しでチャートを参照する必要があります。

events: { 
       drilldown: function (e) { 
         if (!e.seriesOptions) { 
          var chart = this; 

          $.get("http://localhost:54877/GetStats.aspx?key=drilldownGraph&selectedPointName=" + e.point.name, function (data) { 
           chart.addSeriesAsDrilldown(e.point, data); 
          }); 
         } 
       } 
      } 

残りのオプションは正しいです - しかし、あなたのデータは、適切なドリルダウンの設定を持っている必要があります - あなたのデータはのようになりますかHighcharts async multi level drill downからの回答を見てみましょう。

+0

お返事に感謝、そのステートメントを更新した後、このエラーが削除されますが、私は任意の地点をクリックすると、まだ下のグラフは、詳細が表示されない私はJSONレスポンス {「シリーズ」で取得しています出力されます:[{ "id":1、 "name": "Dep1"、 "y":45、 "drilldown": "Dep1"}、{"id":2、 "name": "Dep2"、 "y":25、 "ドリルダウン": "Dep2"}、{"id":3、 "name": "Dep3"、 "y":10、 "drilldown": "Dep3"}、{"id":4、 "name" "Dep5"、 "y":5、 "drilldown": "Dep4"}、{"id":5、 "name": "Dep5"、 "y":15、 "Drilldown": "Dep5"}}} –

+0

"series"の代わりに{"data":[...]}する必要があります - http://jsfiddle.net/h6pt9yap/ – morganfree

関連する問題