2012-11-14 46 views
0

當我雙擊圖表上,我想改變的dataProvider數據提供程序:的Flex更改圖表

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

當我執行,我得到一個錯誤: 量屬性未在ProjectDTO發現沒有默認值。

以前的dataProvider是一個arrayCollection,其元素類型爲:ProjectDTO 但我想將其更改爲元素類型爲CostByNatureDTO的arrayCollection。

CostByNatureDTO擁有量作爲一個屬性

我該怎麼解決?

+0

Plz,誰有解決方案? – junior

回答

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

祝你好運!