IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Flex Discussion :

Attendre la réception d'un événement [Fait]


Sujet :

Flex

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2002
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 53
    Par défaut Attendre la réception d'un événement
    Bonjour,

    j'ai un petit soucis en Flex.
    En gros j'ai une fenêtre principale qui contient entre autre une variable 'user' et un bouton.
    Quand je clique sur ce bouton j'ouvre une nouvelle fenêtre dans un popup 'userListView'.
    Cette fenêtre contient une datagrid dont le dataprovider est une liste de users.
    Cette liste d'utilisateurs est récupérée via un service distant lors de l'initialisation de la fenêtre.

    Le problème est qu'après avoir créé ma fenêtre userListView, je fais appel à une méthode 'setSelectedUser' qui me permet de présélectionner un user dans ma datagrid. Hors je constate que cette méthode est appelée avant de recevoir ma liste d'utilisateur (méthode onLoadUsersSuccess).

    En gros les méthodes sont appelées dans cette ordre :

    1) initialize
    2) setSelectedUser
    3) onLoadUsersSuccess

    hors je voudrais en quelque sorte forcer l'éxécution de setSelectedUser après l'appel à onLoadUsersSuccess:

    1) initialize
    2) onLoadUsersSuccess
    3) setSelectedUser

    Est-ce possible d'une manière élégante sans commencer à devoir jouer avec des wait() ?


    Code de ma fenêtre principale :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ...
    protected function onSelectUserButtonClick():void {
    			var userListView:UserListView = PopUpManager.createPopUp(Application.application as DisplayObject, UserListView, true) as UserListView;
    			userListView.setSelectedUser(user);
    		}
    ...
    Code de UserListView:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    <mx:DataGrid id="usersGrid" dataProvider="{usersCollection}" > ... </mx:DataGrid>
    ...
     
    // A l'initialisation de ma vue je fais appel à un service distant
    private function initialize():void {
    			var url:String=ConfigService.instance.url + "/alfresco/service/api/users";
    			var webScript:WebScriptService=new WebScriptService(url, WebScriptService.GET, onLoadUsersSuccess, onLoadUsersFailure);
    			webScript.execute();
    		}
     
    // Appellé à la réception de ma liste d'utilisateurs -> on initialise le dataprovider
    private function onLoadUsersSuccess(event:SuccessEvent):void {
     
    			usersCollection=new ArrayCollection(event.result.users);
    		}
     
    // Préselection d'un user dans la liste
    public function setSelectedUser(user:Object):void {
    			if(user != null)
    				usersGrid.selectedItem = user;
    		}
    Merci d'avance

  2. #2
    Inactif Avatar de CR_Gio
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 195
    Par défaut
    Salut,

    Quelques éléments de réponse a ton problème :http://iteratif.developpez.com/artic.../popupmanager/
    et la doc bien sur ^^ http://livedocs.adobe.com/flex/2/lan...ventListener()

    Tu l'aura deviné,; il faut que tu utilise la fonction addEventListener() pour détecter la fin de l'initialisation de ta PopUp

    Code AS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var userListView:UserListView;
    protected function onSelectUserButtonClick():void {
    	userListView = PopUpManager.createPopUp(Application.application as DisplayObject, UserListView, true) as UserListView;
    	addEventListener(Event.INIT,onInitPopUp);
    }
    function onInitPopUp(evt : Event):void
    {
    	userListView.setSelectedUser(user);
    }

    Crdlt,

  3. #3
    Membre averti
    Inscrit en
    Avril 2002
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 53
    Par défaut
    Salut,

    si je ne me trompe pas l'événement Event.INIT sera dispatché à la fin de l'exécution de la méthode initialize et non après l'exécution de la méthode onLoadUsersSuccess ?

    Ceci-ci dit ta réponse m'a donné une idée : dispatcher mon propre évènement à la fin de la méthode onLoadUsersSuccess, et remplacer le Event.INIT par cet évènement au niveau de l'appel à addEventListener

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Attendre la fin d'un événement avec fermeture de l'application
    Par abbepierre94 dans le forum Silverlight
    Réponses: 8
    Dernier message: 10/11/2011, 18h07
  2. [MooTools] mootools attendre la fin d'un évènement
    Par damien77 dans le forum Bibliothèques & Frameworks
    Réponses: 1
    Dernier message: 30/07/2010, 09h15
  3. Attendre un évènement
    Par ToTo13 dans le forum Langage
    Réponses: 6
    Dernier message: 08/06/2007, 13h03
  4. Attendre un évènement pour continuer l'exécution
    Par vinzzzz dans le forum Interfaces Graphiques en Java
    Réponses: 7
    Dernier message: 22/11/2006, 21h42
  5. faire attendre un programme qu'un événement se déclenche
    Par fabrisss dans le forum API standards et tierces
    Réponses: 20
    Dernier message: 21/10/2005, 15h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo