Flex:从给定索引的AdvancedDataGrid获取项目

问题描述:

我有一个AdvancedDataGrid的子类,显示了一个树状数据结构。我如何能够在给定calculateDropIndex返回的索引的情况下获得该索引处的项目?Flex:从给定索引的AdvancedDataGrid获取项目

通过代码里姆斯看完之后,好像是最可怕的方式就是:

var oldSelectedIndex:int = this.selectedIndex; 
var mouseOverIndex:int = this.calculateDropIndex(event); 
this.selectedItem = mouseOverIndex; 
var item:* = this.selectedItem; 
this.selectedIndex = oldSelectedIndex; 

另一种选择似乎与iterator财产摆弄周围......但是,通过我的方式判断已经看到了它的使用,那也会很快变得相当不快。

那么,如何在高级数据网格中的特定索引处获取该项目而不会精神错乱?

this.dataProvider.getItemAt(calculateDropIndex(event)); 

翻阅文档,看起来您可能可以使用openNodes,它返回一个所有打开节点的数组,它应该与您的索引一致?

this.dataProvider.openNodes[calculateDropIndex(event)]; 
+0

对不起,但这并不分层的数据。 `this.dataProvider`是'HierarchicalCollectionView'的一个实例,它没有'getItemAt'方法。 – 2009-07-07 19:04:54

你可以尝试:

// Get the dropIndex from the dragEvent 
var index:int = this.calculateDropIndex(event); 
// Get the itemRenderer from the index 
var renderer:IListItemRenderer = this.indexToItemRenderer(index); 
// Get your item from the data property of the itemRenderer 
var item:Object = renderer.data;