Adobe Flex Flash Builder DataGrid dataProvider CollectionEvent.COLLECTION_CHANGE Доступ обработчика к DataGrid? - PullRequest
1 голос
/ 14 февраля 2010

Я добавил eventListener к событию COLLECTION_CHANGE, которое запускается, когда сетка завершает, прибегая к элементам в своем dataProvider, после того, как пользователь нажимает на заголовок столбца:

    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

Кажется, ненадежный способ получить доступ к компоненту сетки из этого обработчика событий - будет ли сетка всегда находиться по свойству сохранено по смещению [2] в массиве слушателей под currentTarget?

1 Ответ

1 голос
/ 14 февраля 2010

Опора на свойство currentTarget.listeners очень ненадежна. Проблема с доступом к сетке из прослушивателя событий заключается в том, что dataProvider передает событие, а не сетку. Так что на самом деле нет никакой связи между событием и сеткой.

В приведенном выше примере кажется, что вы можете получить доступ к сетке напрямую с помощью myDataGrid. Если это не так в вашем реальном приложении, то вам нужно создать класс-оболочку, который содержит ссылку на MyDataGrid и onDataGridResort, на сетку можно ссылаться из обработчика события.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...