Flex で AdvancedDataGrid ツリー列のノードをプログラムで展開する方法を知っている人はいますか? ツリーを使用していた場合、次のようなものを使用します。
dataGrid.expandItem(treeNodeObject, true);
しかし、AdvancedDataGrid でこのプロパティにアクセスできないようです。
Flex で AdvancedDataGrid ツリー列のノードをプログラムで展開する方法を知っている人はいますか? ツリーを使用していた場合、次のようなものを使用します。
dataGrid.expandItem(treeNodeObject, true);
しかし、AdvancedDataGrid でこのプロパティにアクセスできないようです。
AdvancedDataGrid にも expandItem() メソッドがあります。
http://livedocs.adobe.com/flex/3/langref/mx/controls/AdvancedDataGrid.html#expandItem()
前述の URL にあるサンプルをコピーして、次の関数を呼び出します。
private function openMe():void
{
var obj:Object = gc.getRoot();
var temp:Object = ListCollectionView(obj).getItemAt(0);
myADG.expandItem(temp,true);
}
ここで、AdvancedDataGrid にはメソッドがあるにもかかわらず、すべてのノードを展開するように設定されexpandAll()
た というプロパティがあることを追加します。displayItemsExpanded
true
特定の子を展開するには、上記のリンクから確認できるように、 メソッドexpandChildrenOf()
とメソッドを使用できます。expandItem()
カーソルを使用して 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();
}