0

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

- 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>

不起作用:没有数据出现。我试过有一个明确的“子名”列,但没有。我尝试将它包装在 HierarchicalCollectionView 中,但这也不起作用。我已经浏览了基本的分组教程,我的代码和数据看起来遵循了模式。

有任何想法吗?

4

2 回答 2

1

您不得在数据源中包含父母。您需要这样的数据源:

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

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

于 2010-01-21T07:33:26.640 回答
1

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

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

我的两阶段解决方案是首先通过遍历数据并创建一个父元素children数组并向它们添加一个包含子元素的数组属性来处理数据。请注意,这些是引用数组;我不是在复制实际数据。

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

这不仅是一个更简单、更直观的解决方案,而且不需要读者或维护者了解 ADG 的特质(我的座右铭:No Clever Code)。

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

干杯

于 2010-01-22T21:57:29.423 回答