我试着用下面的代码设置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