【问题标题】:Flex: Get an item from a AdvancedDataGrid given an indexFlex:从给定索引的 AdvancedDataGrid 中获取项目
【发布时间】:2009-07-07 18:29:54
【问题描述】:

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

阅读大量代码后,似乎最不可怕的方法是:

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

另一个选项似乎是在修改 iterator 属性...但是,从我看到它使用的方式来看,它也会很快变得非常困难。

那么,我怎样才能在高级数据网格中的特定索引处获取项目而不发疯?

【问题讨论】:

    标签: apache-flex flex3


    【解决方案1】:

    你可以试试:

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

    【讨论】:

      【解决方案2】:
      this.dataProvider.getItemAt(calculateDropIndex(event));
      

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

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

      【讨论】:

      • 抱歉,这不适用于分层数据。 this.dataProvider 是“HierarchicalCollectionView”的一个实例,它没有“getItemAt”方法。
      • calculateDropIndex返回的索引是item的扁平化索引吗?在那种情况下,我想你必须计算它指向哪个孩子......我想这并不比你建议的要少......
      猜你喜欢
      • 1970-01-01
      • 2012-05-18
      • 1970-01-01
      • 2011-07-08
      • 2013-06-15
      • 1970-01-01
      • 1970-01-01
      • 2012-02-18
      相关资源
      最近更新 更多