3

Flex で AdvancedDataGrid ツリー列のノードをプログラムで展開する方法を知っている人はいますか? ツリーを使用していた場合、次のようなものを使用します。

dataGrid.expandItem(treeNodeObject, true);

しかし、AdvancedDataGrid でこのプロパティにアクセスできないようです。

4

4 に答える 4

5

AdvancedDataGrid にも expandItem() メソッドがあります。

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

于 2009-04-20T16:09:22.837 に答える
5

前述の URL にあるサンプルをコピーして、次の関数を呼び出します。

private function openMe():void
{
    var obj:Object = gc.getRoot();
    var temp:Object = ListCollectionView(obj).getItemAt(0);
    myADG.expandItem(temp,true);
}
于 2009-04-20T16:21:41.340 に答える
2

ここで、AdvancedDataGrid にはメソッドがあるにもかかわらず、すべてのノードを展開するように設定されexpandAll()た というプロパティがあることを追加します。displayItemsExpandedtrue

特定の子を展開するには、上記のリンクから確認できるように、 メソッドexpandChildrenOf()とメソッドを使用できます。expandItem()

于 2012-09-25T13:28:42.147 に答える
2

カーソルを使用して 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();
    }
于 2009-04-20T19:23:48.047 に答える