2010-02-14 38 views
1

我已经添加的事件监听到当电网完成诉诸于它的dataProvider中的项目被解雇的COLLECTION_CHANGE事件,列标题的用户点击后:Adob​​e Flex Flash Builder DataGrid dataProvider CollectionEvent.COLLECTION_CHANGE处理程序对DataGrid的访问权限?

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

... 

    private function onDataGridResort(e:CollectionEvent) : void { 


    } 

MyDataGrid有一些自定义的辅助方法使用dataProvider,从onDataGridResort函数内部访问它们会很有用。我可以访问dataProvider已附加到的数据网格吗?当我在调试器检查“E”(CollectionEvent),我看到

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

这似乎不可靠的方法,从这个事件处理程序中获得的网格组件 - 将电网始终处于财产被发现savedThis在currentTarget下的侦听器数组中的偏移量[2]处?

回答

1

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

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