2011-03-31 39 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