2011-03-31 36 views
0

我想解釋我的問題的最好方法是用hierarchical XML data example on Livedocs來描述它。Flex AdvancedDataGrid HierarchicalData XML導致不需要的行

這裏,XML的形式爲

<Region Region="Arizona"> 
    <Territory_Rep Territory_Rep="Barbara Jennings" Actual="38865" Estimate="40000"/> 
    <Territory_Rep Territory_Rep="Dana Binn" Actual="29885" Estimate="30000"/> 
</Region> 

不過,我有數據更像是:

<Region Region="Arizona"> 
    <Territory_Rep Territory_Rep="Barbara Jennings"> 
     <Actual>38865</Actual> 
     <Estimate>40000</Estimate> 
    </Territory_Rep> 
    <Territory_Rep Territory_Rep="Dana Binn"> 
     <Actual>29885</Actual> 
     <Estimate>30000</Estimate> 
    </Territory_Rep> 
</Region> 

而且我會編程方式創建列像這樣:

var cols:Array = []; 

var adgColumn:AdvancedDataGridColumn = new AdvancedDataGridColumn(); 
adgColumn.headerText = "Rep Name"; 
adgColumn.dataField = "@Territory_Rep"; 
cols.push(adgColumn); 

adgColumn = new AdvancedDataGridColumn(); 
adgColumn.headerText = "Actual"; 
adgColumn.dataField = "Actual"; 
cols.push(adgColumn); 

adgColumn = new AdvancedDataGridColumn(); 
adgColumn.headerText = "Estimate"; 
adgColumn.dataField = "Estimate"; 
cols.push(adgColumn); 

grid.columns = cols;  
grid.validateNow(); 

但是,這將導致代表顯示爲分支節點(即文件夾),一些空葉底下的節點。這顯然不是我想要的 - 我需要它仍然像在示例中一樣。

很明顯,我可以通過編寫一些代碼來解決這個問題 - 最簡單的方法是更改​​XML(即源代碼或我的Flex應用程序中的解析器),或解析它,然後將所需數據轉儲到ArrayCollection相反,但是沒有辦法讓這個開箱即用?鑑於我已經指示AdvancedDataGrid使用單個行上的所有子元素,爲什麼不能從層次結構的角度忽略它們呢?

由於AdvancedDataGrid似乎有一些其他惱人的問題(例如question 3517769)是我最好的選擇,只是創建我自己的類,做我想做的所有事情?還是有一些體面的解決方法,我不知道?

乾杯。

回答

0

我認爲這種行爲是有道理的,因爲通過構建您的XML,您可以有更高層次的層次結構。所以,最乾淨的解決辦法是改變這種狀況,或者如果你喜歡這種方式,也許引進一個屬性標記一個分支非hierachial這樣的:

<Region Region="Arizona"> 
    <Territory_Rep Territory_Rep="Barbara Jennings" NonHierarchial="true"> 
     <Actual>38865</Actual> 
     <Estimate>40000</Estimate> 
    </Territory_Rep> 
    <Territory_Rep Territory_Rep="Dana Binn" NonHierarchial="true"> 
     <Actual>29885</Actual> 
     <Estimate>30000</Estimate> 
    </Territory_Rep> 
</Region> 

,並覆蓋在AdvancedDataGrid的分析方法看爲此屬性。

編輯:你可能可以通過childrenField這個屬性在HierarchicalData對象中解決這個問題,在文檔中進行一些挖掘!參見:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/collections/HierarchicalData.html#childrenField

+0

謝謝。我已經考慮過這兩個解決方案 - 其中包括 - 但有希望我可能會錯過簡單的東西。我同意這種行爲是有道理的,但它不能被財產重寫。同樣的'刷新崩潰'問題。看起來我正在擴展/重寫/重寫... – Marc 2011-03-31 11:50:04

+0

絕對要在從頭開始重寫之前先嚐試擴展和覆蓋,更容易調整這個現有的網格,而不是意識到實現它的所有缺陷。其實只是找到了一些東西,在一秒之內編輯我的答案! – dain 2011-03-31 12:10:00

+0

再次感謝。我也已經探索過你的其他建議,但它不適合我的實施;我上面描述的方式是我實際做的一個非常簡單的例子。正如我所說,所有這些東西都不可配置開箱是令人遺憾的;畢竟,源XML有時是成立的。事實上,節點在刷新時崩潰只是普通的垃圾。啊,延長課程是... – Marc 2011-03-31 12:20:05