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

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

    Informations forums :
    Inscription : Mai 2009
    Messages : 65
    Points : 41
    Points
    41
    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 éclairé
    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
    Points : 894
    Points
    894
    Par défaut
    mais je suis obligé de faire une bidouille
    Pourquoi ?

    Tu n'as pas essayé d'affecter une fonction à labelFunction ?
    jyl@xx
    "Simplicity does not precede complexity, but follows it." Alan Perlis

  3. #3
    Membre averti
    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
    Points : 417
    Points
    417
    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 habitué 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
    Points : 149
    Points
    149
    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
    THE CHANGE

    Toujours en quête de connaissance

    WINDOWS :Oracle 11G, SQL DEVELOPER 2.2, Eclipse Ganymede 3.4 plugins VE 1.4, Flex 4

    MAC OsX 10.6.5 : Oracle 10G R2 SQL DEVELOPER 1.5.4, Eclipse Helios 3.6, plugins VE 1.4, Flex 4

  5. #5
    Membre averti
    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
    Points : 417
    Points
    417
    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 habitué 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
    Points : 149
    Points
    149
    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.
    THE CHANGE

    Toujours en quête de connaissance

    WINDOWS :Oracle 11G, SQL DEVELOPER 2.2, Eclipse Ganymede 3.4 plugins VE 1.4, Flex 4

    MAC OsX 10.6.5 : Oracle 10G R2 SQL DEVELOPER 1.5.4, Eclipse Helios 3.6, plugins VE 1.4, Flex 4

  7. #7
    Membre averti
    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
    Points : 417
    Points
    417
    Par défaut
    Comment récupérer ET manipuler l'objet sélectionner si tu passe un dataProvider en XML ?

    Ma question sous-jascente, c'est que, pour moi, par exemple, qui ait l'habitude de manipuler des ArrayCollections sur mes composants, quel serait l'intérêt de manipuler un format XML à la place ?

    Je dis ça car je pense que le format XML n'est fait que pour récupérer des données depuis une source type Service Web, mais que ensuite il vaut mieux transformer ses données en ArrayCollection (plus "standard" dans la plupart des composants)

    mais ton point de vue m'intrigue et comme je cherche à améliorer mes connaissances, je cherche à comprendre s'il y a un intérêt que je ne connaitrais pas

  8. #8
    Membre éclairé
    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
    Points : 894
    Points
    894
    Par défaut
    Comment récupérer ET manipuler l'objet sélectionner si tu passe un dataProvider en XML ?
    Lorsque tu affectes un objet à la propriété dataProvider, soit celui implémente déjà l'interface ICollectionView/IList, soit un "wrapper" implémentant cette interface est créé.

    Donc lorsque tu utilises en lecture la propriété dataProvider tu l'utilises comme un ICollectionView/IList.

    Ma question sous-jascente, c'est que, pour moi, par exemple, qui ait l'habitude de manipuler des ArrayCollections sur mes composants, quel serait l'intérêt de manipuler un format XML à la place ?
    L'intérêt d'affecter directement l'objet disponible est de ne pas alourdir le code par des traitements supplémentaires et de ne pas dupliquer les données.

    Je dis ça car je pense que le format XML n'est fait que pour récupérer des données depuis une source type Service Web, mais que ensuite il vaut mieux transformer ses données en ArrayCollection (plus "standard" dans la plupart des composants)
    La plupart du temps c'est les interfaces ICollectionView/IList qui sont utilisées. Est-ce que tu as besoin d'autre chose ?


    Pour compléter ces propos, j'utilises un format de message propriétaire avec mon serveur qui me renvoie les données sous forme d'un "stream" (dérivé de ByteArray). J'ai simplement implémenté l'interface IList et je peux ainsi l'utiliser directement comme dataProvider sans transformation couteuse en ressources.
    jyl@xx
    "Simplicity does not precede complexity, but follows it." Alan Perlis

  9. #9
    Membre habitué 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
    Points : 149
    Points
    149
    Par défaut
    Comment récupérer ET manipuler l'objet sélectionner si tu passe un dataProvider en XML ?
    Si tu veux manipuler ton objet, le truc est de passer directement par l'id de ta comboBox et taper sur l'objet sélectionné du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cb.selectedItem // il contient ton objet à manipuler
    Même si tu utilisais un ArrayCollection, ce serait pareil. si tu veux manipuler un objet affecter à un comboBox, tu es obligé de passer ainsi sinon, comment saurais-tu quel objet tu souhaites récupérer??

    Ma question sous-jascente, c'est que, pour moi, par exemple, qui ait l'habitude de manipuler des ArrayCollections sur mes composants, quel serait l'intérêt de manipuler un format XML à la place ?
    Tout simplement gain de temps.

    mais ton point de vue m'intrigue et comme je cherche à améliorer mes connaissances, je cherche à comprendre s'il y a un intérêt que je ne connaitrais pas
    Le format XMl n'est pas fait que pour récupérer des données, Dans notre boîte en travaille beaucoup plus XML, cela facile les échanges de données et brise la barrières des formats de données.

    Voilà, j'espères t'avoir éclairé
    THE CHANGE

    Toujours en quête de connaissance

    WINDOWS :Oracle 11G, SQL DEVELOPER 2.2, Eclipse Ganymede 3.4 plugins VE 1.4, Flex 4

    MAC OsX 10.6.5 : Oracle 10G R2 SQL DEVELOPER 1.5.4, Eclipse Helios 3.6, plugins VE 1.4, Flex 4

  10. #10
    Membre averti
    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
    Points : 417
    Points
    417
    Par défaut
    ok ! merci !

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

    Informations forums :
    Inscription : Mai 2009
    Messages : 65
    Points : 41
    Points
    41
    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