2009-06-17 34 views
1

在flex 3中,我有一個分層數據結構。我想在樹中顯示它的內容。我的問題是,我有節點的數據從兒童節點計算。如果孩子的數據發生變化,如何構建層次結構以自動更改這些父節點? 例如:從分層數據結構中的子字段計算的父數據

  • 每個節點都有一個警告標誌。如果某些子警告標誌更改爲true,則父警告標誌應該自動更改爲true。
  • 節點整數字段是子節點整數字段的總和,如果任何子節點發生更改,則父節點字段會立即「計算」總和。

是否有一個簡單的解決方案機智良好的結構變化自動發生,或者我必須做一些自定義功能?

謝謝!

回答

0

我們按照這種模式做到這一點:

  1. 計算在父類中的值創建方法,並使其可綁定與事件。
  2. 在父項中,爲子集合更改時添加事件偵聽器。爲此,子集合應該是ArrayCollection或類似的。
  3. 當截取所述變化事件,提高(或有條件提高)附着到在步驟中提到的可綁定元數據的方法中的事件1.

這應當會導致在觀看父的聚集性質的任何UI每次更新孩子時都會更新。

下面是一個例子:

public class Parent 
{ 
    private var children:ArrayCollection = new ArrayCollection(); 

    public function Parent() 
    { 
     children.addEventListener(
      CollectionEvent.COLLECTION_CHANGE, 
      function(evt:CollectionEvent):void 
      { 
       if (...) 
       { 
        dispatchEvent(new Event("warningStateChanged")); 
       } 
      } 
     ); 
    } 

    [Bindable("warningStateChanged")] 
    public function containsWarnings():Boolean 
    { 
     for each (var child:Child in children) 
     { 
      if (child.hasWarning) 
      { 
       return true; 
      } 
     } 
     return false; 
    } 
} 
+0

真的感謝。 我也來解決方案創建一個自定義節點類型與監聽器上的兒童收藏變化事件是必要的。 – spupek 2009-06-18 10:46:45