Flex: расширение столбца дерева AdvancedDataGrid программным способом - PullRequest
3 голосов
/ 20 апреля 2009

Кто-нибудь знает, как программно развернуть узлы столбца дерева AdvancedDataGrid во Flex? Если бы я использовал дерево, я бы использовал что-то вроде этого:

dataGrid.expandItem(treeNodeObject, true);

Но у меня нет доступа к этому свойству в AdvancedDataGrid.

Ответы [ 4 ]

5 голосов
/ 20 апреля 2009

Скопируйте образец, найденный по вышеупомянутому URL, и вызовите эту функцию:

private function openMe():void
{
    var obj:Object = gc.getRoot();
    var temp:Object = ListCollectionView(obj).getItemAt(0);
    myADG.expandItem(temp,true);
}
5 голосов
/ 20 апреля 2009

AdvancedDataGrid также имеет метод expandItem ():

http://livedocs.adobe.com/flex/3/langref/mx/controls/AdvancedDataGrid.html#expandItem()

2 голосов
/ 25 сентября 2012

Хотелось бы добавить, что AdvancedDataGrid, несмотря на наличие метода expandAll(), имеет свойство с именем displayItemsExpanded, значение которого true будет расширять все узлы.

Для расширения определенных потомков могут использоваться методы expandChildrenOf() и expandItem(), что можно проверить по ссылкам, приведенным выше.

2 голосов
/ 20 апреля 2009

Вы также можете открывать узлы, просматривая dataProvider с помощью курсора. Вот как я открываю все узлы на указанном уровне:

    private var dataCursor:IHierarchicalCollectionViewCursor;

    override public function set dataProvider(value:Object):void
    {
        super.dataProvider = value;

        /* The dataProvider property has not been updated at this point, so call 
            commitProperties() so that the HierarchicalData value is available. */
        super.commitProperties();

        if (dataProvider is HierarchicalCollectionView)
            dataCursor = dataProvider.createCursor();
    }

    public function setOpenNodes(numLevels:int = 1):void
    {
        dataCursor.seek(CursorBookmark.FIRST);

        while (!dataCursor.afterLast)
        {
            if (dataCursor.currentDepth < numLevels)
                dataProvider.openNode(dataCursor.current);
            else
                dataProvider.closeNode(dataCursor.current);

            dataCursor.moveNext();
        }

        dataCursor.seek(CursorBookmark.FIRST, verticalScrollPosition);

        // Refresh the data provider to properly display the newly opened nodes
        dataProvider.refresh();
    }
...