2011-12-23 5 views
0

ここで最初の質問。
このように私は、いくつかの通常のバーを示すBarChartコントロールとBarSeriesにを持っている:ユーザーがボタンをクリックするとBarSeriesを追加した後にBarChartをリフレッシュする

<mx:BarChart id="barchart" dataProvider="{model.myList}" type="clustered"> 
    <mx:horizontalAxis> 
     <mx:LinearAxis autoAdjust="true"/> 
    </mx:horizontalAxis> 
    <mx:verticalAxis> 
     <mx:CategoryAxis categoryField="name"/> 
    </mx:verticalAxis> 
    <mx:series> 
     <mx:BarSeries dataProvider="{model.myList}" xField="myValue"/> 
    </mx:series> 
</mx:BarChart> 

、私は、いくつかの値を計算する「myCalculatedValue」上に置くと、別のBarSeriesにを追加する必要があります比較として。私はこれをやっている:

var barSerie:BarSeries = new BarSeries(); 
barSerie.dataProvider = model.myList; 
barSerie.xField = "myCalculatedValue"; 
barchart.series.push(barSerie); 

しかし、BarChartはまったく変更されません。新しいBarSeriesを追加した後にグラフを更新する方法はありますか?

答えて

0

短い答えは、このコードを使用することですチャートなどのデータバックアップされたコンポーネントは、function set dataProviderプロパティまたは同等のもの(この場合はseries)にあります。関連する「無効」メソッドは、setメソッドの最後に呼び出されていることを

public function set series(value:Array /* of Series */):void 
{ 
    value = value == null ? [] : value; 
    _userSeries = value; 

    var n:int = value.length; 
    for (var i:int = 0; i < n; ++i) 
    { 
     if (value[i] is Series) 
     { 
      (value[i] as Series).owner = this;     
     } 
    } 

    invalidateSeries(); 
    invalidateData(); 
    legendDataChanged(); 
} 

は注意:ここで

mx.charts.chartClasses.ChartBaseからのコードがあります。 barChart.series.push(x)と言う場合、set seriesメソッドは呼び出されず、getterだけが呼び出されます。したがって、チャートにシリーズの変更があったことを知らせるには、シリーズに新しい値を割り当てる必要があります。

それは barChart.series = barChart.series

0

Flexはサーバーとリモートで通信していますが、正しいですか?あなたはたぶんflexを収容しているappコントローラへの別の明示的な呼び出しを行う必要があります。 UIを更新するとき、Flexは知っている

方法:

var barSerie:BarSeries = new BarSeries(); 
barSerie.dataProvider = model.myList; 
barSerie.xField = "myCalculatedValue"; 
var allSeries:Array = barchart.series; 
allSeries.push(barSerie); 
barchart.series = allSeries; 

LONG答え、あなたにこれがどのように動作するかを理解していただくことを:

+0

コーディング良くないですが、でもそれ自体にシリーズを割り当てること無効化の原因となることを指摘する価値があるはい、フレックスは、リモートで通信しています。しかし、私はサーバーまたはローカルから新しいデータを取得している場合でも、私は問題がクライアント側だと思う..私は新しいBarSeriesを追加した後、何らかのリフレッシュ()または再描画()が必要です。 – GoVeM

関連する問題