2009-07-07 72 views
1

我有一個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財產擺弄周圍......但是,通過我的方式判斷已經看到了它的使用,那也會很快變得相當不快。

那麼,如何在高級數據網格中的特定索引處獲取該項目而不會精神錯亂?

回答

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

翻閱文檔,看起來您可能可以使用openNodes,它返回一個所有打開節點的數組,它應該與您的索引一致?

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

對不起,但這並不分層的數據。 `this.dataProvider`是'HierarchicalCollectionView'的一個實例,它沒有'getItemAt'方法。 – 2009-07-07 19:04:54

4

你可以嘗試:

// 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;