2013-10-27 22 views
5

私はこのページにいくつかのAmStockChartを持っています。それらは折れ線グラフです。データはJSON形式でMySQL DBから取得されます。ユーザーがグラフの点(箇条書き)をクリックすると、ユーザーがデータを変更して保存できるフォームが表示されます。この場合、グラフを再描画する必要があり、これを把握することはできません。ここで再描画AmStockChart

は、コードの一部です:

//drawing all charts there are 
var chart; 
$.getJSON('stats.php', function (data) { // get all data from all stats at once 
    var i=0; 
    for (chartData in data) { 
     i++; 
     chart = new AmCharts.AmStockChart(); 
     var dataSet = new AmChart.DataSet(); 
     dataSet.dataProvider = chartData; 
     // etc. etc. here are all the single graph parameters 
     $('#stats').append('<div id="chartdiv' + i + '"></div>'); 
     chart.write("chartdiv" + i); 
    } 
}); 

私は罰金描かれたすべてのチャートを取得します。しかし、ここに2つの問題があります。後で 'グラフ'変数としてアクセスできない最初の問題は、最後に描かれたグラフだけを指しています。 2番目の問題は、この最後のグラフを再描画しようとしても結果が得られないということです。

何もしなかった
function chart_redraw(stat) { 
    $.getJSON('stat.php?redraw=' + stat, function (data) { // get data for one particular stat 
    var dataSet = new AmCharts.DataSet(); 
    dataSet.dataProvider = data; 
    ... 
    chart.dataSets = [dataSet]; 

    var stockPanel = new AmChart.StockPanel(); 
    stockPanel.validateData(); 
    chart.panels = [stockPanel]; 

    chart.validateNow(); 
}); 

、すなわちチャートが再描画されません:私は次のことを試してみましたチャートを再描画する

function chartClick (event) { 
    var chartdiv = event.event.target.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.id 
    $('#chart_n').val(chartdiv); 
    ... 
} 

し、その場所でそのdiv要素とクレート新しいものからチャートを削除するためにそれを使用する:私は何ができる

唯一のものはでクリックイベントで隠し入力でチャートのdivを格納することですvalidateData()はもっと遅くなります。そうして

dataSet.dataProvider = yourDataArray; 

とあなたのコードはまた、パネル/データセットを変更する必要がありますしかし

stockChart.validateData(); 

を呼び出し、:

答えて

5

データが変更された場合、あなたがする必要があるすべては、データセットのための新しいデータを設定されています私にとってはちょっと奇妙です。コンソールのエラーはありますか?そうでない場合は、あなたのケースの完全なソースを見る必要がありますが、私の提案はうまくいきます。

+0

私はすべてを行うことができませんでしたが、私はbuttion clickで変わったと思われる2つのデータソースを使って簡単なコードを作っています。グラフは再描画するべきですが、そうではありません。これは次のとおりです。http://jsfiddle.net/33SDv/2/ – user164863

+3

また、chart.mainDataSet = dataSetを設定する必要があります。これは以前のデータセットを記憶して使用するためです。 – zeroin

関連する問題