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

时间:2009-07-07 18:29:54

标签: flex flex3

我有一个AdvancedDataGrid的子类,显示了一个树状的数据结构。考虑到calculateDropIndex返回的索引,如何获取该索引处的项目?

阅读完大量代码后,似乎最不可靠的方式是:

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

另一种选择似乎是在修补iterator属性...但是,根据我看到它使用的方式来判断,这也会很快变得非常困难。

那么,如何才能在高级数据网格中的特定索引处获取该项而不会疯狂?

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

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

通过文档查看,您似乎可以使用openNodes,它返回一个所有开放节点的数组,它应该与您的索引相对应?

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