前端flex,使用BlazeDs从数据库读取数据。返回数据类型为2个数组,分别是一维数组filedName和二维数组values。
fieldName记录x轴坐标显示名称。values记录三个LineSeries需要显示的数据。
使用flash builder自带的数据绑定。将数据源绑定为 dataProvider="{getReportResult.lastResult[0].values}",即二维数组上。数据成功显示。
在横坐标设置时,做如下设置
<mx:horizontalAxis>
<mx:CategoryAxis id="categoryAxis" dataProvider="{getReportResult.lastResult[0].fieldName}" labelFunction="categoryAxisLabelFun"/>
</mx:horizontalAxis>
即将横坐标的数据源设置成fieldName。并且使用函数categoryAxisLabelFun()做个性化设置如下:
private function categoryAxisLabelFun( item : Object, prevValue : Object, axis : CategoryAxis, categoryItem : Object) : String {
var temp : CategoryAxis = axis;
temp.categoryField = item as String;
return temp.categoryField ;
}
LineSeries相关标签设置如下:
<mx:series>
<mx:LineSeries id="lineSeries1" displayName="OFI" yField="{0}"/>
<mx:LineSeries id="lineSeries2" displayName="Minor NC" yField="{1}"/>
<mx:LineSeries id="lineSeries3" displayName="Major NC" yField="{2}"/>
</mx:series>
此时发现lineSeries1无法显示出来,其他正常。并且x轴坐标能够显示。
再加一句<mx:LineSeries id="lineSeries1" displayName="OFI" yField="{0}"/>
后又能够显示出来,但是总数和显示的个数总相差一。
感觉好像是categoryAxisLabelFun函数中的temp.categoryField = item as String; 有问题。但是不是很明白到底是什么原因,如何解决?望高人指点