我在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]处找到吗?
答案 0 :(得分:1)
依赖currentTarget.listeners
属性是非常不可靠的。从事件侦听器访问网格的问题是dataProvider
广播事件,而不是网格。所以事件和网格之间确实没有任何关系。
在上面的示例中,您似乎可以直接使用myDataGrid
访问网格。如果您的真实应用程序不是这种情况,那么您需要创建一个包含对MyDataGrid
和onDataGridResort
的引用的包装类,可以从事件处理程序引用网格。