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 :

Dataprovider (et combobox)


Sujet :

Flex

  1. #1
    Modérateur
    Avatar de toopac
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 940
    Points : 2 913
    Points
    2 913
    Par défaut Dataprovider (et combobox)
    Bonjour.

    J'ai un ArrayCollection de la forme suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    monArrayCollection[0].attribut1= tata
    monArrayCollection[0].attribut2= titi
    monArrayCollection[1].attribut1= toto
    monArrayCollection[1].attribut2= tutu
    ...
    j'aimerai afficher dans une combox uniquement l'attribut1 de mon ArrayCollection.

    Ceci
    maCombobox.dataProvider = monArrayCollection
    ne fonctionne donc pas, j'obtiens des "[object Object]" partout.

    et
    maCombobox.dataProvider = monArrayCollection.attibut1
    non plus, parce que le type ArrayCollection n'a pas d'attribut s'appelant "attribut1".


    Comment faire donc pour remplir ma combobox uniquement avec l'attibut1?

    Merci

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Mai 2006
    Messages
    895
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 895
    Points : 1 710
    Points
    1 710
    Par défaut
    Bonjour,

    Tu dois utiliser le labelField à qui tu fournis attribut1.

    ++

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2009
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 20
    Points : 22
    Points
    22
    Par défaut
    tu doit faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maCombobox.labelField = "attibut1" ;

  4. #4
    Modérateur
    Avatar de toopac
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 940
    Points : 2 913
    Points
    2 913
    Par défaut
    Super merci!

  5. #5
    Modérateur
    Avatar de toopac
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 940
    Points : 2 913
    Points
    2 913
    Par défaut
    Re Bonjour!

    J'ai une autre question sur le même exemple, dans la même veine:

    Imaginons que j'ai "toto", et que j'aimerai récupérer "tutu" :
    je récupère l'index de "toto" et je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monArrayCollection[indexRécupéré].attibut2
    Mais comment récupérer l'index de "toto"?
    => Faire un sorte de monArrayCollection.getItemIndex("toto") mais qui porte sur l'attibut1?

    Merci

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Mai 2006
    Messages
    895
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 895
    Points : 1 710
    Points
    1 710
    Par défaut
    Bonjour,

    Je n'ai rien compris à ton problème pourrais tu être plus clair s'il te plait ?

    ++

  7. #7
    Modérateur
    Avatar de toopac
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 940
    Points : 2 913
    Points
    2 913
    Par défaut
    Désolé, j'étais reparti sur l'exemple de mon premier post qui n'est effectivement pas génial

    Voici donc quelque chose de plus proche de mon programme, et de plus clair (j'espère!)

    J'ai un ArrayCollection de la forme suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    - tab = mx.Collection.ArrayCollection
    |__[0] = Object
    | |_attribut1 = "A1"
    | |_attribut2 = "A2"
    |
    |__[1] = Object
    | |_attribut1 = "B1"
    | |_attribut2 = "B2"
    |
    |__[2] = Object
      |_attribut1 = "C1"
      |_attribut2 = "C2"
    et une combobox remplie de la manière suivante (grâce à vos précédentes réponses ):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    combobox.dataProvider = tab;
    combobox.labelField = "attribut1";
    Avant l'affichage de cette combobox j'ai récupéré une valeur (correspondant à l'attribut2 d'un des objets de 'tab').
    Mon but est de faire en sorte que l'élément sélectionné par défaut dans la combobox ne soit pas le premier élément du tableau, mais celui correspondant à la valeur récupérée.

    Ça sera peut être plus clair avec un exemple :

    Si je récupère "B2", j'aimerai donc avoir la combobox suivante :
    Non dépliée :
    _________
    |__B1__|v|

    Dépliée :
    _________
    |__B1__|v|
    |__A1__|
    |__B1__|
    |__C1__|


    Pour ce faire, j'ai besoin de l'index de l'objet qui a pour attribut2 "B2" (ici 1)

    Est-ce que je peux faire ça grâce à une méthode de ArrayCollection, ou dois-je faire la boucle et les tests moi même?

    un truc de ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    private fonction getIndex(valeur:String):int
    {
      for (var i:int; i<tab.length; i++)
        if(tab[i].attribute1 == valeur)
          return i;
      return -1;
    }
    En espérant avoir été plus clair!
    Merci d'avance!

  8. #8
    Membre éclairé
    Homme Profil pro
    Consultant Angular / Java J2EE
    Inscrit en
    Novembre 2008
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant Angular / Java J2EE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 545
    Points : 875
    Points
    875
    Par défaut
    Salut,

    Si j'ai bien compris ton problème, un truc du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    combobox.selectedIndex = indexrécupéré;
    (j'ai cru comprendre que tu avais déjà l'index de ton objet sur lequel se trouvent les attriubuts 1 et 2).

    L'important c'est l'index de l'objet à afficher. Ensuite la propriété "labelfield" de ta combobox fait seulement office de "vue" sur ce que tu veux afficher.
    -> pour chaque entrée dans ton dataprovider (e.g ton ArrayCollection), il y a un objet. La combobox affichera seulement le champ de cet objet que tu voudras. si tu lui a spécifié "attribut1" tu auras tout le temps cet attribut1 qui sera affiché (mais avec toutes les données de l'objets correspondant toujours disponibles).

    donc des que tu as l'index de l'objet voulu dans ton Arraycollection, il n'y a plus rien à faire.

    C'est ce que tu cherchais ou je n'ai pas du tout compris ton problème ?
    N'oubliez pas avant de poster :

  9. #9
    Modérateur
    Avatar de toopac
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 940
    Points : 2 913
    Points
    2 913
    Par défaut
    Bonjour,

    en fait ce que je voulais savoir, c'est comment récupérer cet index. En particulier si il existe un moyen simple (une méthode de ArrayCollection par exemple), plutôt que d'écrire une fonction comme celle que j'ai écrite juste avant (getIndex).

  10. #10
    Membre éclairé
    Homme Profil pro
    Consultant Angular / Java J2EE
    Inscrit en
    Novembre 2008
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant Angular / Java J2EE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 545
    Points : 875
    Points
    875
    Par défaut
    oui, la méthode getItemIndex()..
    N'oubliez pas avant de poster :

  11. #11
    Modérateur
    Avatar de toopac
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 940
    Points : 2 913
    Points
    2 913
    Par défaut
    si je fais ça me retourne -1...

  12. #12
    Membre éclairé
    Homme Profil pro
    Consultant Angular / Java J2EE
    Inscrit en
    Novembre 2008
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant Angular / Java J2EE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 545
    Points : 875
    Points
    875
    Par défaut
    C'est normal, cette fonction s'attend à recevoir un objet en paramètre.

    tu devrais consulter la doc..
    N'oubliez pas avant de poster :

  13. #13
    Modérateur
    Avatar de toopac
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 940
    Points : 2 913
    Points
    2 913
    Par défaut
    oui je sais.
    J'aimerai bien lui renvoyé l'objet avec l'attribut1 = "B1" et attribut2="B2", mais le problème c'est que je ne connais pas l'attribut1!

    En gros il faut que je connaisse l'index en ne connaissant qu'un des deux attributs.

    Sinon c'est pas dramatique, ma petite fonction fonctionne, mais je voulais juste savoir si j'étais entrain de coder une fonction déjà existante...

  14. #14
    Membre éclairé
    Homme Profil pro
    Consultant Angular / Java J2EE
    Inscrit en
    Novembre 2008
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant Angular / Java J2EE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 545
    Points : 875
    Points
    875
    Par défaut
    Salut,
    Comment récupères-tu l'attribut2 stp ?
    N'oubliez pas avant de poster :

  15. #15
    Modérateur
    Avatar de toopac
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 940
    Points : 2 913
    Points
    2 913
    Par défaut
    j'obtiens l'attribut2 totalement ailleurs (pas grâce à l'ArrayCollection)

  16. #16
    Membre éclairé
    Homme Profil pro
    Consultant Angular / Java J2EE
    Inscrit en
    Novembre 2008
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant Angular / Java J2EE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 545
    Points : 875
    Points
    875
    Par défaut
    Effectivement, ca risque d'être compliquer sans utiliser ta fonction.

    tu peux l'écrire également comme ceci, en utilisant les méthodes de l'arrayCollection:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    private function getIndex(valeur:String):int
    {
      for each(var item:Object in tab)
        if(item.att2 == valeur)
          return tab.getItemIndex(item);
      return -1;
    }
    N'oubliez pas avant de poster :

  17. #17
    Modérateur
    Avatar de toopac
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 940
    Points : 2 913
    Points
    2 913
    Par défaut
    OK merci!
    Je débute Flex, et je n'aime par réinventer la roue à chaque fois.
    Mais apparemment ici, il n'existe pas de fonction toute faite, je vais donc garder ma solution actuelle.

    Merci à tous!

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 09/05/2010, 13h04
  2. Binding object DataProvider Combobox
    Par richton95 dans le forum Windows Forms
    Réponses: 0
    Dernier message: 05/08/2009, 10h24
  3. Réponses: 4
    Dernier message: 29/07/2009, 11h02
  4. Récupération nom du dataProvider d'une combobox
    Par xavpiaf dans le forum Flex
    Réponses: 4
    Dernier message: 13/05/2009, 21h55
  5. dataProvider d'une ComboBox via Httpservice
    Par clio671 dans le forum Flex
    Réponses: 2
    Dernier message: 27/01/2009, 15h00

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