我需要一个分层网格,用于显示父行和子行的列数据。
- 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中,但这也不起作用。我已经完成了基本的分组教程,我的代码和数据看起来就像模式一样。
有什么想法吗?
答案 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。
干杯