我想解釋我的問題的最好方法是用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)是我最好的選擇,只是創建我自己的類,做我想做的所有事情?還是有一些體面的解決方法,我不知道?
乾杯。
謝謝。我已經考慮過這兩個解決方案 - 其中包括 - 但有希望我可能會錯過簡單的東西。我同意這種行爲是有道理的,但它不能被財產重寫。同樣的'刷新崩潰'問題。看起來我正在擴展/重寫/重寫... – Marc 2011-03-31 11:50:04
絕對要在從頭開始重寫之前先嚐試擴展和覆蓋,更容易調整這個現有的網格,而不是意識到實現它的所有缺陷。其實只是找到了一些東西,在一秒之內編輯我的答案! – dain 2011-03-31 12:10:00
再次感謝。我也已經探索過你的其他建議,但它不適合我的實施;我上面描述的方式是我實際做的一個非常簡單的例子。正如我所說,所有這些東西都不可配置開箱是令人遺憾的;畢竟,源XML有時是成立的。事實上,節點在刷新時崩潰只是普通的垃圾。啊,延長課程是... – Marc 2011-03-31 12:20:05