0

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

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

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

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

CostByNatureDTO 具有数量作为属性

我该如何解决?

4

1 回答 1

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;
 }

祝你好运!

于 2012-11-14T18:08:01.327 回答