tree在使用HierarchicalCollectionView为数据源时默认打开所有节点
情景:从数据库加载datatable数据,所有记录都是平行关系,为表示从属关系,UI上使用Tree,用HierarchicalCollectionView作为数据源
问题:默认展开全部节点
解决:
mxml:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<mx:GroupingCollection id="gc" source="{acUnits}">
<mx:grouping>
<mx:Grouping>
<mx:GroupingField name="townNM"/>
</mx:Grouping>
</mx:grouping>
</mx:GroupingCollection>
<mx:HierarchicalCollectionView id="hc" source="{gc}"/>
<!--end delears-->
<mx:Tree id="tUnits" width="100%" height="100%" dataProvider="{hc}" labelFunction="labelFuc">
</mx:Tree>
<mx:grouping>
<mx:Grouping>
<mx:GroupingField name="townNM"/>
</mx:Grouping>
</mx:grouping>
</mx:GroupingCollection>
<mx:HierarchicalCollectionView id="hc" source="{gc}"/>
<!--end delears-->
<mx:Tree id="tUnits" width="100%" height="100%" dataProvider="{hc}" labelFunction="labelFuc">
</mx:Tree>
as:
获取数据:
private function onGetListSuc(o:Object):void
{
form.acUnits=o as ArrayCollection;
form.gc.refresh();
ActionUtil.ExpandAll(form.tUnits,form.hc.mx_internal::treeData);
}
{
form.acUnits=o as ArrayCollection;
form.gc.refresh();
ActionUtil.ExpandAll(form.tUnits,form.hc.mx_internal::treeData);
}
ActionUtil.ExpandAll方法:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
/**
* 展开树的全部节点
* @param tree 要被展开的树
* @param ac 要展开的节点集合
*/
public static function ExpandAll(tree:Tree,ac:ArrayCollection):void
{
for each (var item:Object in ac)
{
tree.expandChildrenOf(item,true);
}
}
* 展开树的全部节点
* @param tree 要被展开的树
* @param ac 要展开的节点集合
*/
public static function ExpandAll(tree:Tree,ac:ArrayCollection):void
{
for each (var item:Object in ac)
{
tree.expandChildrenOf(item,true);
}
}