Почему AdvancedDataGrid не обновляется при обновлении провайдера данных HierarchicalData? - PullRequest
1 голос
/ 26 февраля 2009

У меня есть AdvancedDataGrid (ADG) с провайдером данных HierarchicalData:

<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 - это коллекция значений объекта ParentItem:

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

Ответы [ 3 ]

1 голос
/ 27 февраля 2009

Спасибо dirkgently за то, что направили меня к ответу. Теперь я исключаю необходимость в свойстве HierarchicalData в моей модели и вместо этого устанавливаю параметр Hierarchical dataProvider прямо в MXML:

<mx:AdvancedDataGrid xmlns:mx="http://www.adobe.com/2006/mxml">
    <mx:dataProvider>
        <mx:HierarchicalData source="{__model.parentItems}" />
    </mx:dataProvider>
</mx:AdvancedDataGrid>
1 голос
/ 26 февраля 2009

См. это . При работе с dataProviders.

рекомендуется всегда использовать связываемый ArrayCollection.
0 голосов
/ 20 июля 2010

Попробуйте

IHierarchicalCollectionView(__model.myHierarchicalData).refresh();
...