2010-02-05 26 views
1

我有一個主類ClassA,它具有一系列簡單數據類型(如int,字符串等)的「普通」屬性。它還有一個屬性(「childItems」),它是ClassB的ArrayCollection。Flex AdvancedDataGrid AdvancedDataGridRendererProvider childrenField ArrayCollection - 關於行爲的問題

我正在使用ClassA的ArrayCollection作爲AdvancedDataGrid的分層數據提供程序的源。我將childrenField設置爲「childItems」。

我想在嵌套表和餅圖中顯示關於ClassB對象列表的一些信息,所以我配置了一個AdvancedDataGridItemRendererProvider(columnIndex = 0,columnSpan = 0,depth = 2)並將它指向我的自定義渲染器是HBox的桌子和餅圖。

爲了看看設置了什麼,我重寫了我的自定義渲染器中的「set data」函數,我看到的是ArrayCollection中ClassB的每個實例都單獨傳遞給渲染器。

這是我的問題:我期望ClassB實例的整個ArrayCollection傳遞給自定義renderprovider一次,而不是單獨的子列表中的每個項目。我該如何讓ADG瞭解整個屬性應該作爲數據傳遞給渲染器,而不是分別傳遞給每個條目?

順便說一下,當我將「childItems」的數據類型從ArrayCollection更改爲ArrayList時,整個列表都會通過,我可以輕鬆地做我想做的事情。但基於我的理解,ArrayList不是真的應該被使用,並且ArrayCollection更好或者更常見。

對此的任何見解,將不勝感激。

謝謝!

+0

由於您正在構建分層列表,因此子節點將單獨呈現。如果需要在子渲染器中使用完整的ClassB實例列表,則應重構數據,以便將ClassB數組作爲ClassA對象的單個子對象;比每個ClassA實例渲染器都有一個子渲染器,您可以在其中訪問其ClassB實例的列表。 – rekaszeru 2011-04-11 18:12:31

回答

1

我幾乎堅持ArrayList而不是ArrayCollection作爲屬性數據類型。然後整個ArrayList被一次傳遞給一個渲染器,而不是ArrayCollection中每個項目的一個渲染器。

這不是特別好,因爲源數據結構是一個ArrayCollection,而我所有的其他列表都是ArrayCollections,但這對我很有用,而且我從來不打算爲此找到不同的解決方案。