Flex更改图表的dataProvider

时间:2012-11-14 09:13:22

标签: flex

当我双击图表时,我想更改dataProvider:

  public function myListener(e:ChartItemEvent):void {
    mainDataProvider = e.hitData.item.costsByNature;
    pieSeries.nameField="natureLabel";
    pieSeries.field="amount";
 }

当我执行时,我收到一个错误: 在ProjectDTO上找不到amount属性,并且没有默认值。

以前的dataProvider是一个arrayCollection,其元素类型为:ProjectDTO 但我想将其更改为元素类型为CostByNatureDTO的arrayCollection。

CostByNatureDTO将金额作为财产

我该如何解决?

1 个答案:

答案 0 :(得分:0)

就个人而言,我会创建一个这两个模型都会实现的接口。例如,

public interface IFooBar {
  function get myLabel():String;
  function get myAmount():Number;
}



public class CostsByNature implements IFooBar {
  //your code here
  public var natureLabel:String;
  public var amount:String;


  public function get myLabel():String {
     return this.natureLabel;
  }

  public function get myAmount():Number {
    return this.amount;
  }
}


public class ProjectDTO implements IFooBar {
  //your code here
  public var projectLabel:String;
  public var projectAmount:String;


  public function get myLabel():String {
     return this.projectLabel;
  }

  public function get myAmount():Number {
    return this.projectAmount;
  }
}

在饼图中,始终绑定到“myLabel”和“myAmount”。在饼图的监听器中,在dataProviders之间切换。

public function myListener(e:ChartItemEvent):void {
    mainDataProvider = e.hitData.item.costsByNature;
 }
祝你好运!