我試着用下面的代碼設置Highcharts系列和類別的數據動態
$j(document).ready(function() {
$j("#filter").click(function() {
BuildReport();
});
$j("#container").highcharts({
chart: {
type: 'column',
marginRight: 130,
marginBottom: 100
},
title: {
text: 'SEs open by Group',
x: -20 //center
},
yAxis: {
title: {
text: ''
},
min: 0,
allowDecimals: false
},
xAxis: {},
tooltip: {
formatter: function() {
return '<b>' + this.x + '</b><br/>' +
this.series.name + ': ' + this.y + '<br/>' +
'Total: ' + this.point.stackTotal;
}
},
plotOptions: {
column: {
stacking: 'normal',
cursor: 'pointer',
}
}
},
legend: {
layout: 'vertical',
align: 'right',
verticalAlign: 'top',
x: -10,
y: 100,
borderWidth: 0
},
series: {}
});
BuildReport();
});
function SetChartSeries(series) {
debugger;
chart = $j("#container").highcharts();
chart.xAxis[0].setCategories(getReportCategories(series));
chart.series = $j.map(series, function (item) {
return {
name: item.Name,
color: item.Colour,
data: $j.map(item.Items, function (list) {
return {
name: list.Category,
y: list.Value,
id: list.ID
};
})
};
});
}
function getReportCategories(data) {
var catArray = [];
$j.each(data, function (index, value) {
$j.each(value.Items, function (index, value) {
if ($j.inArray(value.Category, catArray)) {
catArray.push(value.Category);
}
});
});
return catArray;
}
function BuildReport() {
$j.ajax({
url: "ChartDataHandler.ashx",
dataType: "json",
cache: false,
success: function (data) {
SetChartSeries(data.Series);
}
});
}
頁面加載或過濾器按鈕被點擊BuildReport調用處理程序,並通過了一系列數據來更新通過Ajax調用圖表SetChartSeries。從這裏我可以看到圖表屬性已設置,但圖表從未繪製。我做了什麼明顯錯誤?
您是否嘗試將AJAX方法更改爲POST? – melancia 2013-04-25 15:07:44
那好像不是問題所在。數據從AJAX調用中恢復得很好。以前,我在ajax調用的成功處理程序中創建了具有series和category屬性的圖表,並且此工作正常,但是隻需創建一次圖表,然後使用每個新的ajax調用更新類別和系列數據。 – 2013-04-25 15:28:29
有一些頭痛,直到我更多地瞭解Highcharts如何工作。也許重繪圖表? chart.redraw() – melancia 2013-04-25 15:32:08