5
我在頁面上幾個AmStockCharts。那些是線圖。數據從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);
}
});
我得到繪製精細的所有圖表。但是,這裏有兩個問題。我以後就不能訪問它們的「圖表」變量只是指最後繪製的圖表第一個問題。第二個問題是,即使我試圖重繪最後一張圖表,我也沒有結果。
重繪我曾嘗試以下圖表:
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();
});
這並沒有做任何事情,即圖表不會被重新繪製。
我唯一能做的事情就是在點擊事件由圖表DIV保存在一個隱藏的輸入:
function chartClick (event) {
var chartdiv = event.event.target.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.id
$('#chart_n').val(chartdiv);
...
}
,然後用它來刪除該分區和包裝箱新的圖表在那個地方但是它比validateData()要慢得多。
好吧,我不能讓整個事情,但我做了一個簡單的代碼有兩個數據源在一個buttion點擊據稱改變,evetually圖形應該重新繪製,但事實並非如此。那就是:http://jsfiddle.net/33SDv/2/ – user164863
您還應該設置chart.mainDataSet =數據集;因爲它記得以前的數據集並使用它。 – zeroin