我有一个带有HierarchicalData dataProvider的AdvancedDataGrid(ADG):
<mx:AdvancedDataGrid xmlns:mx="http://www.adobe.com/2006/mxml"
dataProvider="{__model.myHierarchicalData}"
displayItemsExpanded="true" sortExpertMode="true" dropEnabled="true"
sortableColumns="false" draggableColumns="false"
resizableColumns="true" textAlign="left" defaultLeafIcon="{null}"
folderOpenIcon="{null}" folderClosedIcon="{null}"/>
当我最初在Model中设置HierarchicalData实例时,它会按预期显示:
function buildHierarchicalData(parentItems:ArrayCollection):void
{
__model.myHierarchicalData = new HierarchicalData();
__model.myHierarchicalData.source = parentItems;
}
parentItems 是ParentItem valueObjects的集合:
package
{
[Bindable]
public class ParentItem
{
public var children:ArrayCollection;
public var label:String;
}
}
但是,当我将子项从一个父项移动到另一个父项时(通过拖放),使用以下代码无法看到更新:
function moveChildren(movedChildren:Array /* of ParentItem */):void
{
parentItem.children = new ArrayCollection(movedChildren);
}
然而,出于某种原因,这可行:
function moveChildren(movedChildren:Array /* of ParentItem */):void
{
parentItem.children.source = movedChildren;
}
为什么我必须更新ArrayCollection的来源???
答案 0 :(得分:1)
见this。在处理ArrayCollection
时,建议始终使用可绑定的dataProviders
。
答案 1 :(得分:1)
非常感谢我指导我找到答案。我现在不再需要在我的模型中使用HierarchicalData属性,而是在MXML中设置Hierarchical dataProvider:
<mx:AdvancedDataGrid xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:dataProvider>
<mx:HierarchicalData source="{__model.parentItems}" />
</mx:dataProvider>
</mx:AdvancedDataGrid>
答案 2 :(得分:0)
尝试
IHierarchicalCollectionView(__model.myHierarchicalData).refresh();