我有一个 Flex 应用程序,它有一个包含分组集合的高级数据网格。我希望屏幕最初关闭所有节点。从那里,用户可以选择打开一个或两个并查看其中的信息。如果单击其中一个节点子项,则会使用视图堆栈将视图更改为包含有关该子项的更多信息的屏幕。但是,当我们返回初始屏幕时,它会再次关闭所有节点。
我希望应用程序记住哪些节点保持打开状态以及最后单击的项目是什么,并将其突出显示。
我已经尝试使用 IHierarchicalCollectionView(dataProviderName).openNodes 并将其分配给一个对象,当视图发生变化时以及当它返回 Assisning 这个对象给 IHierarchicalCollectionView(dataProviderName).openNodes 时。但该应用程序似乎进入了一个循环,IE 停止响应。
这是我的 DataGrid 的代码。任何帮助,将不胜感激。
public class SummaryGridBase extends AdvancedDataGrid
{
[Bindable]
protected var _modelLocator:ModelLocator = ModelLocator.getInstance();
[Bindable]
override public function set dataProvider(value:Object):void
{
super.dataProvider = value;
}
override protected function collectionChangeHandler(event:Event):void
{
super.collectionChangeHandler(event);
trace("Summary Grid Trace 1");
if( event is CollectionEvent && (event as CollectionEvent).kind == CollectionEventKind.REFRESH )
{
trace("Summary Grid Trace 2");
this.validateGridAndExpand();
}
}
private function validateGridAndExpand():void
{
this.validateNow();
var rootLevel:ArrayCollection = ModelLocator.getInstance().groupingCollection.getRoot() as ArrayCollection;
for each( var item:Object in rootLevel )
{
this.expandItem( item, true, false );
}
}
protected function changeHandler(event:ListEvent):void
{
trace("Change in Summary Data Selection" +(this.selectedItem.Business));
if( this.selectedItem.Business == null )
{
trace("Im Null");
Alert.show( "Please Expand a Vendor Using The Arrow Beside it \nand Select a Polymer From the List", 'Warning', mx.controls.Alert.OK);
}
else
{
var summaryEvent:SummaryEvent = new SummaryEvent( SummaryEvent.SELECT_SUMMARY, (this.selectedItem.Business as String), (this.selectedItem.Op_Site as String),(this.selectedItem.Vendor as String),(this.selectedItem.Item_Desc as String) );
summaryEvent.dispatch();
}
}
public function SummaryGridBase()
{
super();
}
}