1 votes

Adobe Flex Flash Builder DataGrid dataProvider CollectionEvent.COLLECTION_CHANGE accès du gestionnaire à la grille de données ?

J'ai ajouté un eventListener à l'événement COLLECTION_CHANGE qui est déclenché lorsque la grille a fini de recourir aux éléments de son dataProvider, après que l'utilisateur a cliqué sur l'en-tête d'une colonne :

    MyType (myDataGrid.dataProvider).addEventListener(CollectionEvent.COLLECTION\_CHANGE,
 onDataGridResort);

...

    private function onDataGridResort(e:CollectionEvent) : void {

    }

MyDataGrid possède des méthodes d'aide personnalisées pour travailler avec le dataProvider et il serait utile d'y avoir accès à l'intérieur de la fonction onDataGridResort. Puis-je avoir accès à la grille de données à laquelle le dataProvider a été attaché ? Lorsque j'examine "e" (CollectionEvent) dans le débogueur, je vois

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

Il semble que ce ne soit pas un moyen fiable d'accéder au composant de la grille à l'intérieur de cet eventhandler -- la grille sera-t-elle toujours trouvée à la propriété sauvéCela à l'offset [2] dans le tableau des listeners sous currentTarget ?

1voto

Samuel Neff Points 35554

S'appuyant sur la currentTarget.listeners est très peu fiable. Le problème de l'accès à la grille à partir de l'écouteur d'événement est que la propriété dataProvider diffuse l'événement, pas la grille. Il n'y a donc pas vraiment de relation entre l'événement et la grille.

Dans l'exemple ci-dessus, il semble que vous puissiez accéder directement à la grille à l'aide de la commande myDataGrid . Si ce n'est pas le cas dans votre application réelle, vous devez créer une classe enveloppante qui contient une référence à MyDataGrid y onDataGridResort la grille peut être référencée à partir du gestionnaire d'événement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X