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