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 :

ComboBox chargée depuis une requête SQL


Sujet :

Flex

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 65
    Par défaut ComboBox chargée depuis une requête SQL
    Voilà j'interroge une base SQL qui me renvoie un résultat du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <tests>
      <test>
         <label>2009-09-27</label>
         <data>49</data>
      </test>
      <test>
         <label>2009-09-27</label>
         <data>50</data>
      </test>
    <tests>
    j'aimerai associé le résultat XML à une combobox mais je suis obligé de faire une bidouille et de passer par l'intermédiaire d'un ArrayCollection :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    private var lstTst: ArrayCollection = new ArrayCollection;
     
    ...
     
    for each(var xml:XML in tst.data.test)
    {
    	lstTst.addItem( {label:xml.label, data:xml.data} );			
    }
    tst est une classe et data le résultat XML de ma requête.

    Ca fonctionne mais ça me semble un peu pourri comme code ???

  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
    mais je suis obligé de faire une bidouille
    Pourquoi ?

    Tu n'as pas essayé d'affecter une fonction à labelFunction ?

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 319
    Par défaut
    Si j'ai bien compris ce que tu cherche à faire c'est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new ArrayCollection(mx.utils.ArrayUtil.toArray(xmlResult));
    source de l'exemple :

    http://www.flexdeveloper.eu/forums/a...raycollection/

    ... et Google

  4. #4
    Membre éclairé Avatar de cashmoney
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 298
    Par défaut
    bonjour,

    je vois que tu as des soucis de données xml pour alimenter le data provider de ta comboBox.

    en effet, quand tu lancer ta requête SQL, tu as le résultat sous forme d'évènement. le truc est de caster le résultat obtenu en xml
    du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    [Bindable]
    private var xml:XML = new XML;
     
    private function resultat(evt:ResultEvent):void{
    xml = evt.result as XML;
    }
    là, tu as le ton xml, et maintenant avec le codage E4X, tes données xml pourront alimenter ton comboBox du genre.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <mx:comboBox id="cb" labelFunction="@test" dataProvider="{xml.tests}"/>
    Voilà, j'espères que ce petit exemple pourra t'avancer

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 319
    Par défaut
    C'est une solution intéressante !
    ça ne pose pas de souci pour récupérer l'index ou l'objet sélectionné ?
    En fait, dans ce cas, on doit continuer à tout gérer en XML avec e4x (qui n'est pas une mauvaise solution loin de là) ?

  6. #6
    Membre éclairé Avatar de cashmoney
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 298
    Par défaut
    ça ne pose pas de souci pour récupérer l'index ou l'objet sélectionné ?
    Que veux-tu dire pas là??

    En fait, dans ce cas, on doit continuer à tout gérer en XML avec e4x (qui n'est pas une mauvaise solution loin de là) ?
    Tout dépend de ce que l'on veut obtenir durant l'avancement dans son code et aussi de peser le pour et le contre d'utiliser du XML facile à manipuler avec le E4X ou utiliser des ArrayCollection, le choix est donné.
    Pour ma part quand j'ai des données en XML, je préfères les manipuler en E4X, plus simple.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 65
    Par défaut
    Citation Envoyé par cashmoney Voir le message
    bonjour,

    je vois que tu as des soucis de données xml pour alimenter le data provider de ta comboBox.

    en effet, quand tu lancer ta requête SQL, tu as le résultat sous forme d'évènement. le truc est de caster le résultat obtenu en xml
    du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    [Bindable]
    private var xml:XML = new XML;
     
    private function resultat(evt:ResultEvent):void{
    xml = evt.result as XML;
    }
    là, tu as le ton xml, et maintenant avec le codage E4X, tes données xml pourront alimenter ton comboBox du genre.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <mx:comboBox id="cb" labelFunction="@test" dataProvider="{xml.tests}"/>
    Voilà, j'espères que ce petit exemple pourra t'avancer
    Excellent ! cette solution marche très bien !
    J'ai juste remarqué une petite erreur : dataProvider="{xml.tests}"

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

Discussions similaires

  1. JTree remplissage depuis une requête SQL
    Par Phixx dans le forum JDBC
    Réponses: 12
    Dernier message: 27/11/2013, 06h35
  2. Remplissage de QComboBox depuis une requête SQL
    Par L0101SA dans le forum Bases de données
    Réponses: 2
    Dernier message: 01/03/2008, 20h42
  3. Lancement d'un exe depuis une requête SQL
    Par mister_rom dans le forum Développement
    Réponses: 5
    Dernier message: 29/11/2007, 10h27
  4. Lancement d'un exe depuis une requête SQL
    Par mister_rom dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 29/11/2007, 10h27
  5. Générer une requête SQL depuis un model physique
    Par Ryan Sheckler dans le forum Requêtes
    Réponses: 4
    Dernier message: 01/12/2005, 12h11

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