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 :

recuperer valeur d'un combobox


Sujet :

Flex

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 227
    Par défaut recuperer valeur d'un combobox
    Bonjour,

    J'aurais besoin d'un petit coup de pouce pour réaliser une petite opération.

    Je dispose d'un comboBox qui à 3 options ("choix 1", "choix 2", "choix 3"). J'aimerais pouvoir afficher un de ses choix dans une colonne de mon datagrid.
    Or j'ai une erreur à cette ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    colonne_cbox = ComboBox(event.target).selectedItem;
    Le problème doit venir de mon champ colonne_cbox mais je ne comprend pas ou est le problème.

    Voici la partie du code concerné:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <mx:ComboBox dataProvider="{hello}" close = "affichageCombobox(event)" />
    <mx:AdvancedDataGridColumn headerText="Colonne 1" dataField="colonne_cbox"/>
     
    [Bindable]
    public var hello:ArrayCollection = new ArrayCollection(
                  [ {label:"choix 1"}, 
                    {label:"choix 2"}, 
                    {label:"choix 3"} ]);
     
    private function affichageCombobox():void
              {
             colonne_cbox = ComboBox(event.target).selectedItem;
              }
    Il s'agit d'une erreur de syntaxe mais je ne la trouve pas.
    Merci par avance

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    793
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2009
    Messages : 793
    Par défaut
    J'aurais besoin d'un petit coup de pouce pour réaliser une petite opération.
    Tu es un peu optimiste

    Il s'agit d'une erreur de syntaxe mais je ne la trouve pas.
    Un peu plus que cela...


    1- le choix de l'évènement "close" est un mauvais choix, il faut utiliser "change".
    2- on ne sait pas d'où sort colonne_cbox !
    3- colonne_cbox ne peut pas être à la fois une variable isolée et un champ du dataprovider de ta grille.
    4- où est la définition de ton AdvancedDataGrid ?
    5- quel est la structure du dataprovider de ton AdvancedDataGrid ?
    etc.

    Trop de questions pour pouvoir t'aider plus que ça...

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 227
    Par défaut
    Pour faire plus simple, pourrais tu m'expliquer quels sont les étapes à suivre pour pouvoir à l'aide d'un combobox et d'un bouton obtenir les différentes valeurs du combobox dans un datagrid.
    Exemple:
    1) Je clique sur le combobox
    2) Je choisi "choix 1"
    3) je clique sur le bouton pour copier "choix 1" dans mon datagrid
    4) "choix 1" s'affiche dans la 1ere ligne du datagrid

    Mon problème vient du fait que je ne sais pas comment récupérer la variable "choix 1, 2 ou 3" pour la mettre dans un datagrid

  4. #4
    Membre expérimenté Avatar de samy2525
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 259
    Par défaut
    Bonjour, à mon avis tu ne peux pas declarer une colonne sans la mettre dans le conteneur de base dataGrid

    en gros ça donne ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <mx:DataGrid styleName="tonstyle" id="choiceDataGrid" >
           <mx:columns>
    	          <mx:DataGridColumn id="cboxC" dataField="colonne_cbox"/>
    	</mx:columns>
    </mx:DataGrid>
    tu mis la meme chose pour un AdvancedDataGrid

    Bon courage

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 227
    Par défaut
    Citation Envoyé par samy2525 Voir le message
    Bonjour, à mon avis tu ne peux pas declarer une colonne sans la mettre dans le conteneur de base dataGrid

    en gros ça donne ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <mx:DataGrid styleName="tonstyle" id="choiceDataGrid" >
           <mx:columns>
    	          <mx:DataGridColumn id="cboxC" dataField="colonne_cbox"/>
    	</mx:columns>
    </mx:DataGrid>
    tu mis la meme chose pour un AdvancedDataGrid

    Bon courage
    Merci mais j'ai bien compris cela et il est déjà présent dans mon code, je n'ai pas mis tout mon code pour ne pas encombrer et chambouller les personnes qui vont lire le poste.

    Je cherche "juste" à pouvoir récupérer la valeur choisi d'un combobox et la stocker dans une colonne d'un tableau.

    Voilà encore merci

  6. #6
    Membre expérimenté Avatar de samy2525
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 259
    Par défaut
    Pour cela il te suffit de jouer un peu avec le dataProvider de ton dataGrid je m'explique,

    il faut catcher l'event change de listEvent sur la comboBox en gros
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    maComboBox.addEventListner(ListEvent.CHANGE, maComboChange)
    dans ta fonction maComboChange tu recupere l'element selectionné, l'element peut etre un objet complexe comme un objet simple suivant ce que tu as decidé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    private function maComboChange(event : ListEvent):void
    {
    var typeChoixSelectedItem : String; // je ne connais pas la structure de ta comboBox	
    typeChoixSelectedItem = (ComboBox(event.currentTarget).selectedItem).label
    }
    dans cette meme fonction tu dois assigné au dataProvider du DataGrid les changement

    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
    private function maComboChange(event : ListEvent):void
    {
    var typeChoixSelectedItem : String; // je ne connais pas la structure de ta comboBox	
    typeChoixSelectedItem = (ComboBox(event.currentTarget).selectedItem).label
     
    var obj : Object = new Object()
    obj.colonne_cbox = typeChoixSelectedItem;
     
    // on rajoute l'objet un arrayCollection qui va etre le dataProvider du dataGrid
     
    var arryC : ArrayCollection = new arrayCollection()
    arryC.addItem(obj)
     
    dataGrid.dataProvider = arrayC
     
    }
    bon je ne garantie pas que ca va fonctionner mais bon peu etre c un debut de quelque chose

    bon courage

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 227
    Par défaut
    Merci beaucoup pour ton aide je vais essayer de comprendre ce que tu as mis.

  8. #8
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    793
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2009
    Messages : 793
    Par défaut
    Merci mais j'ai bien compris cela et il est déjà présent dans mon code, je n'ai pas mis tout mon code pour ne pas encombrer et chambouller les personnes qui vont lire le poste
    .

    En général les personnes qui cherchent à aider préfèrent avoir trop d'informations que pas assez. Si tu ne transmets que des extraits il faut qu'ils se suffisent à eux mêmes. Par exemple ne pas utiliser une variable sans inclure sa définition, ne pas montrer un composant sans montrer son parent...
    Quand on a plus de code il est plus facile de proposer une solution en corrigeant les erreurs détectées, si on a que des extraits on est obligé d'imaginer beaucoup de possibilités et donc soit de faire des réponses intermédiaires en demandant des précisions, soit de faire des réponses exhaustives qui finissent par davantage ressembler à des tutoriaux... (merci aux courageux..) Dans les deux cas tu demandes beaucoup aux personnes qui te répondent !!

    Je cherche "juste" à pouvoir récupérer la valeur choisi d'un combobox et la stocker dans une colonne d'un tableau.
    Si tableau veut dire "DataGrid", un DataGrid ne stocke rien, il ne fait qu'afficher le contenu d'une source de données (dataProvider). De plus les valeurs sont enregistrées dans des lignes et non pas dans des colonnes. Donc ton objectif est de récupérer la valeur saisie dans un ComboBox pour la placer dans une ligne d'un dataProvider (d'ailleurs quelle(s) ligne(s) ? la(les) lignes sélectionnée(s), toutes les lignes ? une nouvelle ligne...) . Que cette source de données soit utilisée dans un DataGrid ou pas ne change pas la réponse.
    Tout ça pour dire que l'élément essentiel est le dataProvider que l'on ne connait toujours pas...

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 227
    Par défaut
    Bonjour jylaxx, je ne comprend pas ce que tu ne comprends pas...

    Je souhaite récupérer la valeur d'un combobox et à chaque clique d'un bouton l'afficher dans une colonne d'un datagrid.
    Au sujet du code, j'ai trouvé bon de ne pas tout mettre histoire de "simplifier" le problème, il s'agit manifestement d'une erreur de ma part (tu me pardonnes ??? ...)

    Je ne demande pas forcément LA réponse mais juste une méthode, un tuyau, un coup de pouce peut être pour faire cela. Je n'attends donc pas de réponse précise...

  10. #10
    Membre Expert
    Avatar de Jim_Nastiq
    Homme Profil pro
    Architecte, Expert Flex
    Inscrit en
    Avril 2006
    Messages
    2 335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte, Expert Flex
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 335
    Par défaut
    Salut Claire,

    Ce que te dis Jylaxx c'est que tu te censures et que visiblement, ne connaissant pas ou mal Flex, tu ne nous donne pas toutes les infos utiles pour t'aider.
    En particulier sur l'alimentation de ton DataGrid, comme le dit Jylaxx, ce n'est qu'un visualiseur de données, et ces données transit via le dataProvider, c'est bien ce dataProvider qui nous est inconnu. Ou affectes tu les données à ton dataGrid ? avec quoi ?

    Tu précises un dataField à ton AdvancedDataGridColumn, cette propriété, colonne_cbox, est elle bien présente dans ton jeu de données ?
    la propriété dataField pointe la donnée à afficher dans le dataProvider (données)
    ainsi si ton arrayCollection (appelons le ac) qui te sert de dataProvider est un tableau d'objet ayant chacun pour propriété nom, prenom, date, sexe tu peux avoir 4 AdvancedDataGridColumn pointant sur chaque propriété nom, prénom, date, et sexe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <mx:AdvancedDataGrid id="choiceDataGrid" dataprovider="{ac}">
           <mx:columns>
    	         <mx:AdvancedDataGridColumn id="cboxC" dataField="nom"/>
                     <mx:AdvancedDataGridColumn id="cboxC" dataField="prenom"/>
                     <mx:AdvancedDataGridColumn id="cboxC" dataField="date"/>
                     <mx:AdvancedDataGridColumn id="cboxC" dataField="sexe"/>
    	</mx:columns>
    </mx:DataGrid>
    Je t'invite encore une fois à apréhender les principes fondamentaux de Flex ,car les dataProvider sont vraiment une partie essentielle. De nombreux exemple et tutoriaux sur le net illustrent son fonctionnement.
    Il te faut prendre le temps de comprendre la philosopie du framework, avant de coder, cela peut paraitre pénible, et une perte de temps, mais je peux t'assurer que c'est un passage obligatoire, qui, a terme te feras gagner le temsp que tu perds acutellement a tenter des bouts de code sans comprendre Flex.

    Pensez vraiment à effectuer une recherche avant de poster, ici et sur un moteur de recherche! c'est la moindre des choses
    Pensez au tag

    Mon Blog sur la techno Flex
    Ma page sur Developpez.com

    Jim_Nastiq

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 227
    Par défaut
    Voici le code qui j'espère enlèvera toute ambiguïté:

    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
     <mx:Form>
    			<mx:FormItem>
    				<mx:TextInput id="nom" />
    			</mx:FormItem>
     
    			<mx:FormItem>
    				<mx:TextInput id="prenom" />
    			</mx:FormItem>
     <mx:Form/>
     
     <mx:AdvancedDataGrid id="dg" dataprovider="{ac}">
           <mx:columns>
    	     <mx:AdvancedDataGridColumn id="cboxC" dataField="nom"/>
                 <mx:AdvancedDataGridColumn id="cboxC" dataField="prenom"/>
    	     <mx:AdvancedDataGridColumn id="cboxC" dataField="choix"/>
    	</mx:columns>
    </mx:DataGrid>
     
    <mx:ArrayCollection id="ac"/>
     
    <mx:ComboBox id="cb" dataProvider="{testbis}" />
     
      <mx:Script>
     
            	<![CDATA[
    private function test():void  
            	{
            	var personne:Object = new Object(); 
       		     personne.nom = nom.text;
    		     personne.prenom = prenom.text;
     
                     ac.addItem({nom:personne.nom, 
            		 	   prenom:personne.prenom,
                                     });
     
            	  }
     
    [Bindable]
    public testbis:ArrayCollection = new ArrayCollection(
                  [ {label:"choix 1"}, 
                    {label:"choix 2"}, 
                    {label:"choix 3"} ]);
    ]]>	
     
            </mx:Script>
    J'aimerais donc récupérer la "valeur" de mon comboBox, la copier et la coller dans mon datagrid à l'emplacement datafield="choix".

  12. #12
    Membre Expert
    Avatar de Jim_Nastiq
    Homme Profil pro
    Architecte, Expert Flex
    Inscrit en
    Avril 2006
    Messages
    2 335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte, Expert Flex
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 335
    Par défaut
    Et bien il suffit d'ajouter le choix de la combobox dans l'objet que tu créé dans l'arraycollection qui te sers de dataProvider.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    var personne:Object = new Object(); 
    personne.nom = nom.text;
    personne.prenom = prenom.text;
    personne.choix = cb.selectedLabel;
     
    ac.addItem(personne);

    PS/ j'en ai profité pour modifier ton code dans ta méthode test , soit tu utilise l'affectation d'object )à l'arrayCollectio via les accolades({}) soit tu créé ton objet avec une instance d'Object mais la tu mélangeais les deux et ca ne servait a rien.



    Prends le temps de lire au moins la doc officiel, car dans ce cas, une simlpe lecture de la doc sur les comboBox t'aurais permit de trouver la syntaxe pour lire l'info sélectionnée dans une combobox

    Pensez vraiment à effectuer une recherche avant de poster, ici et sur un moteur de recherche! c'est la moindre des choses
    Pensez au tag

    Mon Blog sur la techno Flex
    Ma page sur Developpez.com

    Jim_Nastiq

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 227
    Par défaut
    Merci beaucoup c'est exactement ce qu'il me fallait par contre j'ai essayé de mettre:

    et plus rien ne s'affiche
    Je trouve ta remarque judicieuse et logique, il est beaucoup plus clair de mettre:

    Par contre j'ai du mal à comprendre comment faire dans ce cas là pour dire que le "nom" ira dans la colonne "nom", le "prenom" dans la colonne "prenom" etc etc.

    C'est pour cela que j'avais mis:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     ac.addItem({nom:personne.nom, 
                 prenom:personne.prenom,
                       });

  14. #14
    Membre Expert
    Avatar de Jim_Nastiq
    Homme Profil pro
    Architecte, Expert Flex
    Inscrit en
    Avril 2006
    Messages
    2 335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte, Expert Flex
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 335
    Par défaut
    ces 2 écritures sont tout a fait équivalente:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var obj:Object = {nom:nom.text, prenom:prenom.text};
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    var obj:Object = new Object();
    obj.nom = nom.text;
    obj.prenom = prenom.text;
    obj.nom et obj.prenom sont identique pour les 2 objets

    Pensez vraiment à effectuer une recherche avant de poster, ici et sur un moteur de recherche! c'est la moindre des choses
    Pensez au tag

    Mon Blog sur la techno Flex
    Ma page sur Developpez.com

    Jim_Nastiq

Discussions similaires

  1. recuperer valeur d'une combobox
    Par mrom34 dans le forum VBA Word
    Réponses: 1
    Dernier message: 13/12/2007, 17h33
  2. [VB.NET] Recuperation valeur selectionnee dans COMBOBOX
    Par stephane77fr dans le forum Windows Forms
    Réponses: 2
    Dernier message: 30/07/2007, 17h43
  3. Recupere la valeur d'une ComboBox dans une autre cellule
    Par Henricoo dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 01/06/2007, 13h56
  4. recuperer la valeur d'un combobox
    Par scorpion.os dans le forum Flash
    Réponses: 7
    Dernier message: 29/01/2007, 15h37
  5. recuperer la valeur d'une combobox pour la comparer dans une requête
    Par Rukawa dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 30/06/2006, 11h22

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