Adobe Flex Flash Builder DataGrid dataProvider CollectionEvent.COLLECTION_CHANGE处理程序对DataGrid的访问?

时间:2010-02-14 17:34:44

标签: flash sorting flex events

我在COLLECTION_CHANGE事件中添加了一个eventListener,当用户点击列标题后,当网格完成在其dataProvider中求助时触发该事件:

    MyType (myDataGrid.dataProvider).addEventListener(CollectionEvent.COLLECTION_CHANGE,
 onDataGridResort);

...

    private function onDataGridResort(e:CollectionEvent) : void {


    }

MyDataGrid有一些用于处理dataProvider的自定义帮助器方法,从onDataGridResort函数内部访问它们会很有用。我可以访问dataProvider附加到的datagrid吗?当我在调试器中检查“e”(CollectionEvent)时,我看到了

[inherited]
   currentTarget
      listeners
         [0]
         [1]
         [2]
             savedThis    MyDataGrid

从这个事件处理程序中获取网格组件似乎是一种不可靠的方法 - 在currentTarget下的侦听器数组中,网格总是会在属性 savedThis 的偏移[2]处找到吗?

1 个答案:

答案 0 :(得分:1)

依赖currentTarget.listeners属性是非常不可靠的。从事件侦听器访问网格的问题是dataProvider广播事件,而不是网格。所以事件和网格之间确实没有任何关系。

在上面的示例中,您似乎可以直接使用myDataGrid访问网格。如果您的真实应用程序不是这种情况,那么您需要创建一个包含对MyDataGridonDataGridResort的引用的包装类,可以从事件处理程序引用网格。