apache-flex Flex:以编程方式展开AdvancedDataGrid树列

2hh7jdfx  于 2022-11-01  发布在  Apache
关注(0)|答案(4)|浏览(195)

有人知道如何在Flex中以编程方式展开AdvancedDataGrid树列的节点吗?如果我使用的是树,我会使用类似以下的代码:

dataGrid.expandItem(treeNodeObject, true);

但我似乎无法访问AdvancedDataGrid中的此属性。

0x6upsns

0x6upsns1#

AdvancedDataGrid也有一个expandItem()方法:
http://livedocs.adobe.com/flex/3/langref/mx/controls/AdvancedDataGrid.html#expandItem()

baubqpgj

baubqpgj2#

复制在上述url中找到的示例,并调用此函数:

private function openMe():void
{
    var obj:Object = gc.getRoot();
    var temp:Object = ListCollectionView(obj).getItemAt(0);
    myADG.expandItem(temp,true);
}
q8l4jmvw

q8l4jmvw3#

您也可以使用游标遍历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();
    }
du7egjpx

du7egjpx4#

在此需要补充的是,尽管AdvancedDataGrid具有expandAll()方法,但它有一个名为displayItemsExpanded的属性,将该属性设置为true将展开所有节点。
为了展开特定的子对象,可以使用expandChildrenOf()expandItem()方法,这可以从上面给出的链接中得到验证。

相关问题