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 :

Modification d'une combobox à partir d'un controller.


Sujet :

Flex

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Avril 2007
    Messages : 42
    Par défaut Modification d'une combobox à partir d'un controller.
    Bonjour

    Débutante en flex je rencontre quelques soucis, en effet, je suis face à une interface créer par mes soins suite à une phase de login. Il y a 3 combobox. Selon l'utilisateur je souhaite updater les combobox.
    J'appelle donc un WebService pour me fournir ces informations, jusque là pas de soucis, j'ai les bonnes.

    En revanche, je n'arrive pas à updater ma combobox avec ces données.

    Je souhaite initialiser ma combobox lors de la création de la vue, c'est pour cela qu'elle se trouve dans le constructeur du modele.


    Voici mon code

    Celui de la vue :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <ns1:TbsComboBox x="10" y="3" width="100" id="titleList" />
    celui de mon modele
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
     
    package fr.trias.flex.projects.xrail.models
    {
    	import com.tbsfrance.fwk.flex.patterns.mvc.mvcClasses.ModelHelper;
    	import flash.events.IEventDispatcher;
    	import fr.trias.flex.projects.xrail.Other.Globals;
    	import mx.rpc.events.ResultEvent;
    	import mx.rpc.events.FaultEvent;
    	import mx.rpc.soap.WebService;
    	import mx.rpc.soap.LoadEvent;
    	import mx.controls.Alert;
    	import mx.collections.ArrayCollection;
    	import mx.controls.TileList;
     
     
    	[Bindable]
    	public class CheminFerMH extends ModelHelper
    	{
    		private var _WSListeTitle:WebService;
    		private var _WSListeTitleLoaded:Boolean;
    		private var _id:String;
     
    		public function CheminFerMH(target:IEventDispatcher=null)
    		{
    			super(target);
    			loadTitleList(); 
     
    		}
     
     
    		public function initWebService():void
    		{
    			_WSListeTitleLoaded = false;	
    			_WSListeTitle = new WebService();
    			_WSListeTitle.useProxy = false;
    			_WSListeTitle.wsdl = getFlashVarsValue("WSDL");
    			_WSListeTitle.addEventListener(LoadEvent.LOAD, onWSDLLoad);
    			_WSListeTitle.addEventListener(ResultEvent.RESULT, getListeTitleResult);
    			_WSListeTitle.addEventListener(FaultEvent.FAULT, getListeTitleFailed);
     
    		}
     
    		public function getListeTitleResult(e:ResultEvent):void {
    			var result : ArrayCollection = e.result as ArrayCollection;
    			var str : String;
    			setControllerOperation("cheminFerAssemblage","loadTitleList",result); 
     
     
     
    		}
    		public function getListeTitleFailed(e:FaultEvent):void {
     
    		}
    		public function onWSDLLoad(event:LoadEvent):void {
    			   _WSListeTitleLoaded = true;
    		}
    		public function loadTitleList():void {
     
    			var id:String;
    			_id = LoginMH._id; 
    			//id = LoginMH.getId(); 
    			Alert.show(_id,"Recup Global"); 
     
     
    			var idint:int; 
    			idint = parseInt(_id);
    			//Alert.show(idint.toString());  
    			initWebService();
     
    			if(!_WSListeTitleLoaded) // On s'assure que la WSDL est chargée avant d'appeler le webservice
    			{
    				// on charge la WSDL
    				_WSListeTitle.loadWSDL();
    				// on appelle le webService
    				_WSListeTitle.endpointURI = getFlashVarsValue("WS_ENDPOINT");
    				_WSListeTitle.WS_ListeTitresProd(idint);										 			 				
     
    			}
    			else
    			{
    				// on appelle le webService														
    				_WSListeTitle.endpointURI = getFlashVarsValue("WS_ENDPOINT");
     
    				// nom du webservice dans la base 4D
    				_WSListeTitle.WS_ListeTitresProd(idint);										 			 				
    			}
     
     
     
     
     
    		}		
     
     
    	}
    }

    et finalement celui de mon controleur
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    public function loadTitleList(result:ArrayCollection):void
    		{
    			Alert.show("Controller"); 
    			var maCombo:ComboBox = controller.getView("CheminFerView", "cheminFerAssemblage").titleList;
     
    			Alert.show("tableau color array initialisation"); 
    			var COLOR_ARRAY:Array= 
                [{label:"Red", data:"#FF0000"},
                {label:"Green", data:"#00FF00"},
                {label:"Blue", data:"#0000FF"}];
                Alert.show("ArrayList color AC initialisation"); 
                var colorAC:ArrayCollection;
                colorAC = new ArrayCollection(COLOR_ARRAY);
                Alert.show(COLOR_ARRAY.length.toString(),"Taille du tableau couleur"); 
                maCombo.dataProvider(colorAC); 
    			var args :Array = [result[0].length]
    			maCombo.initialize();
    			 maCombo.dataProvider(colorAC); 
    			/*
    			var myDP: Array;
    			myDP = [
                   {Artist:'Pavement', Album:'Slanted and Enchanted', Price:11.99},
                   {Artist:'Pavarotti', Album:'Twilight', Price:11.99},
                   {Artist:'Other', Album:'Other', Price:5.99}];
                   
                   
    			maCombo.dataProvider = myDP; */
    			//maCombo.se
    			//setModelOperation(
    		}
    	}
    }
    au niveau controler, l'exécution s'arrête lorsque j'essaye de récupéré ma comboBox

  2. #2
    Membre expérimenté Avatar de Fares BELHAOUAS
    Homme Profil pro
    Développeur Flex & Java
    Inscrit en
    Mars 2002
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Flex & Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2002
    Messages : 182
    Par défaut
    Salam Leena666,

    Ta question n'est pas très clair, peux-tu l'éclaircir plus. Je te conseil de faire un petit prototype sans webservice juste une simulation des données et du remplissage de tes controls.

    Je vois que ton titleList est de type TbsComboBox, et tu récupère un ComboBox, c'est quoi TbsComboBox?

    var maCombo:ComboBox = controller.getView("CheminFerView", "cheminFerAssemblage").titleList

    Bon courage.

  3. #3
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Avril 2007
    Messages : 42
    Par défaut
    alors, ce que j'essaye de faire à la base c'est de modifier cette combobox après l'initialisation. (le fait que ce soit est une TBSCombobox signifie juste que c'est un autre frameworks mais ce sont les mêmes fonctions)

    dans l'ordre des choses, j'ai une fenetre de login ou je récupere un login et un mot de passe que je garde en mémoire, lors du display de la view contenant ma combobox, je souhaiterai pouvoir modifier cette "titleList" (contenu dans cheminFerView) avec l'arraycollection que j'ai récupéré du serveur. Ces données sont dans le modele cheminferMH. pour cela j'aimerai récupéré le composant "titleList" depuis le controller (cheminFerCH) pour le modifier. (en effet une fois les données récupéré du webservice je passe sur le controller via un setcontrolleroperation en lui passant mon arraycollection...

    et je vais en effet aller regarder pour le combobox au lieu de tbsCombobox O_o (serait bête si c'était ça )

  4. #4
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Avril 2007
    Messages : 42
    Par défaut
    alors non mettre tbscombobox pour

    var maCombo:TBSComboBox = controller.getView("CheminFerView", "cheminFerAssemblage").titleList

    n'y a rien changé. En fait, l'exécution se bloque à cette ligne la (ayant mis une alerte derrière qui ne s'affiche pas )

    ne puis je pas récupéré un composant de cette manière pour ensuite le modifier à partir du controller ?

  5. #5
    Membre expérimenté Avatar de Fares BELHAOUAS
    Homme Profil pro
    Développeur Flex & Java
    Inscrit en
    Mars 2002
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Flex & Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2002
    Messages : 182
    Par défaut
    Salam Leena666,

    Désolais de te le répéter, tes messages sont toujours aussi floues, essaye, s'il te plait, de prendre le temps de faire un prototype, une petite application Flex qui simule ce que tu veux faire, sans trop compliquer le code, afin que tu puisse le poster et qu'on puisse le comprendre.

    est-ce que t'as essayer d'utiliser le debugage, en mettant un trace(maCombo) pour voir si tu récupère ou pas ce composant.

    Bon courage.

Discussions similaires

  1. Réponses: 1
    Dernier message: 24/03/2009, 16h55
  2. comment alimenter une combobox à partir d'une requete
    Par joe12260 dans le forum Windows Forms
    Réponses: 8
    Dernier message: 19/02/2009, 16h21
  3. Remplir une combobox à partir de la 2e ligne
    Par wagui26 dans le forum Débuter
    Réponses: 10
    Dernier message: 13/10/2008, 16h49
  4. [Stratégie] Remplir une ComboBox à partir du contenu d'un JTextField
    Par une_tite_question dans le forum Composants
    Réponses: 4
    Dernier message: 01/07/2008, 14h22
  5. Réponses: 2
    Dernier message: 17/02/2008, 20h33

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