使用 Flex3 开发 OLAP 应用
2010-03-31 00:00:00 来源:WEB开发网这就需要借助 actionscript 中对 Flex 组件动态构建的功能。我们知道,Flex 的类库和组件都是以面向对象的方式设计的,任何组件都可以看成一个对象,其孩子元素以树的方式逐级构建出这个组件的展现。在这里,我们可以将 pieBox 作为一个根元素,并根据传来的 xml 数据,动态地构建相应数量的 panel,而在每个 panel 中,相应添加一个 PieChart。
清单 5. 扩展 pieChart
private function createPieChart():void {
pieBox.removeAllChildren();
var length:int = dim1list.length;
for each (var s:String in dim2list) {
var pieChartPanel:Panel = new Panel();
var localXML:XMLList = chartXML.item.(dim2==s);
// 与清单 1 在 mxml 中设置默认的 columnChartcreate 不同,此处是在 actionscript 中
// 以面向对象的编程方式创建 pieChart,但他们的效果是一样的
var pieChart:PieChart = new PieChart();
pieChart.showDataTips = true;
// 创建饼图对应的 series
var localSeries:PieSeries = new PieSeries();
localSeries.dataProvider = localXML;
localSeries.field = "measure";
localSeries.nameField = "dim1";
localSeries.displayName = s;
pieChart.series.push(localSeries);
pieChartPanel.title = s;
// 为了此处扩展需要,将一个 pieChart 置于一个 pieChartPanel 中
pieChartPanel.addChild(pieChart);
// 每次遍历将创建完的 pieChart 置于 pieBox 中
pieBox.addChild(pieChartPanel);
}
var piePanel:Panel = new Panel();
piePanel.horizontalScrollPolicy = "off";
piePanel.title = chartXML.dim1label;
// legend 是图 3 右边的指示板
var pieLegendBox:Box = new Box();
pieLegendBox.horizontalScrollPolicy = "off";
pieLegendBox.maxHeight = 250;
var pieLegend:Legend = new Legend();
pieLegend.dataProvider = pieChart;
pieLegendBox.addChild(pieLegend);
piePanel.addChild(pieLegendBox);
pieBox.addChild(piePanel);
}
更多精彩
赞助商链接