AdvancedDataGrid地狱:分组行的数据

时间:2010-01-21 05:36:51

标签: flex actionscript-3 grouping hierarchical-data advanceddatagrid

我需要一个分层网格,用于显示父行和子行的列数据。

- a parent | 1234 | data | data |
   a child | 2222 | data | data |
   a child |  212 | data | data |

我试图让ADG正常工作,但默认情况下它除了父行的分组列空白外都有所有列。我想我可以使用项目渲染器来推送数据。

我的阻止问题是我的分组似乎根本不起作用。我在设置dataProvider = MyArrayCollection时可以看到数据,但是

<mx:GroupingCollection id="GroupingCollection" 
           source="{this.specificReportData.gridData}">
    <mx:Grouping label="childName">
        <mx:GroupingField name="parentName" />
    </mx:Grouping>
</mx:GroupingCollection>

工作:没有数据出现。我已经尝试过一个明确的“childname”列,而没有一个。我已经尝试将它包装在HierarchicalCollectionView中,但这也不起作用。我已经完成了基本的分组教程,我的代码和数据看起来就像模式一样。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

您不得在数据源中包含父项。你需要一个像这样的数据源:

   a child | 2222 | data | data | parentid | parentname
   a child |  212 | data | data | parentid | parentname

并将分组字段设置为parentid或parentname。分组从平面数据源中创建层次结构,从而为您创建父级。

答案 1 :(得分:1)

答案是AdvancedDataGrid不是为了做我想要的而构建的。

使用常用值分组数据非常棒;它不擅长将实际父元素作为行本身存在的数据分组。我还要求排序和过滤仅适用于父元素(基于自己的数据);任何可见的父母都可以展示他们的孩子,孩子们永远不会分类。

我的两阶段解决方案是首先处理数据,方法是迭代它并创建一个父元素数组,并为保存子元素的数组添加children数组属性。请注意,这些是引用数组;我不是在复制实际数据。

接下来,我对父数组应用任何排序和过滤(可能通过使用ArrayCollection包装器)并遍历父项,将可见项(及其子项,如果父项标记为expanded)复制到显示数组。我的网格使用显示阵列作为简单(例如未分组)的dataProvider。自定义项呈示器将缩进子项并更改父元素的expanded属性,这将重新生成显示数组。

这不仅是一个更简单,更直观的解决方案,它不需要读者或维护者来理解ADG的特性(我的座右铭:没有聪明的代码)。

谢谢托马斯的尝试。即使我没有将答案标记为答案,我也会给你回复+1。

干杯