【发布时间】:2011-03-31 10:54:03
【问题描述】:
我想解释我的问题的最佳方式是用hierarchical XML data example on Livedocs 来描述它。
这里的 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),我最好的选择是创建自己的类来完成我想要的一切?还是有一些我不知道的体面的解决方法?
干杯。
【问题讨论】:
标签: xml apache-flex hierarchical-data advanceddatagrid