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}"/>
モデルにHierarchicalDataインスタンスを最初に設定すると、期待どおりに表示されます。
function buildHierarchicalData(parentItems:ArrayCollection):void
{
__model.myHierarchicalData = new HierarchicalData();
__model.myHierarchicalData.source = parentItems;
}
parentItemsは、ParentItemvalueObjectsのコレクションです。
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のソースを更新する必要があるのはなぜですか?