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 :

afficher xml dans datagrid


Sujet :

Flex

  1. #1
    Membre du Club
    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
    Points : 65
    Points
    65
    Par défaut afficher xml dans datagrid
    Bonjour,

    J'ai travaillé un code qui me permet d'obtenir un fichier xml depuis un site internet (methode http service).
    J'arrive à afficher le xml dans un Alert.show or je n'arrive pas à transmettre les balises souhaités dans un datagrid. J'ai tout testé mais rien n'y fait.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    private function traceXML(xml:XML):void {
     
       liste = xml.children();
       listeBis = liste[3] as XML;
       Nom = listeBis.children();
       allName =Nom[0] as XML;
       contact = allName.children(); // Tout les contacts se trouve dans cette balise
     
    Alert.show("contact :"+ (contact[0].contactNom as XMLList).text());  
     
    }
    Mon Alert.show m'affiche bien le nom désiré (balise <contactNom> du xml) or comment faire pour afficher dans mon datagrid ce contactNom ???

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    dg = new DataGrid;
    	dg.percentWidth = 50;
    	dg.percentHeight = 35;
    	dg.dataProvider= "???";
     
    	col1 = new DataGridColumn;
    	col1.headerText ="Nom";
    	col1.dataField = "contactNom";
    Je ne sais pas quoi mettre comme dataprovider (j'ai un peu tout testé mais rien ne fonctionne).

    Merci par avance pour votre aide

  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
    Je ne sais pas exactement à quoi ressemble ton xml mais as tu essayé ceci ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dg.dataProvider = contact;

  3. #3
    Membre du Club
    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
    Points : 65
    Points
    65
    Par défaut
    Oui j'ai essayé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dg.dataProvider = contact;
    Mais ca ne fonctionne pas

  4. #4
    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
    Sans nous donner ton XML et le type d'erreur qu'il retourne, ça sera plus compliqué
    Sinon voila la doc expliquant comment manipuler les XML : http://www.adobe.com/livedocs/flex/3/langref/XML.html

  5. #5
    Membre du Club
    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
    Points : 65
    Points
    65
    Par défaut
    Voici un xml tout simple (je ne vais pas mettre le mien car il est assez conséquent):


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <Personne>
      <ID>2</ID> 
      <Nom>Martin</Nom>
      <Prenom>Jean</Prenom>
    </Personne>
    Par contre il n'y a aucun message d'erreur, j'arrive à compiler sans warning ou erreur mais rien ne s'affiche dans le datagrid.

    Le dataprovider du datagrid est bien la xmlList (voir xml ci dessus) et pour obtenir ce que je souhaite je dois mettre comme "id" de la colonne 1 par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    colonne_1.dataField = "Personne.Nom";
    Cette opération m'affichera théoriquement le nom "Martin' dans la colonne 1.
    Est ce bien ça ? Car si c'est bien ça je ne comprends pas d'ou vient le problème...

  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
    Non ça ne fonctionnera pas le dataField attend un nom de propriété dans ton ca ça sera Nom. Si tu veux faire quelque chose de plus complexe, utilise le labelFunction. Il y a plein d'exemple de labelFunction disponible sur le net et dans ce forum Flex également.

  7. #7
    Membre du Club
    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
    Points : 65
    Points
    65
    Par défaut
    Bonjour, je reste bloqué sur ce code. Je n'arrive toujours pas a récupérer des balises de mon xml pour les mettre dans mon datagrid.
    J'arrive à le faire en mxml mais en as3 impossible.
    Quelqu'un aurait il une idée?

    Merci et bonne année!

  8. #8
    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
    Points : 3 189
    Points
    3 189
    Par défaut
    Ok mais ou en est tu ? as tu essayé les orientations d'Ellene (labelField, labelFunction) ? Montre nous ou tu en est car jusqu'ici Ellene t'as donnée toutes les billes .

    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

  9. #9
    Membre du Club
    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
    Points : 65
    Points
    65
    Par défaut
    Voici ou j'en suis:

    Je récupère un xml depuis un web service que j'arrive à afficher grace à une alerte.

    m'affiche bien le xml que j'ai récupérer.


    Mes balises utiles se trouvent dans:


    Lorsque je fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Alert.show("prenom :"+ (xml.children.prenom as XMLList).text());

    J'ai bien le prenom de la personne qui s'affiche. Le seul problème c'est que je n'arrive pas à l'afficher dans le datagrid.

    Je me suis tourné vers la fonction labelfunction et voici ce que ça donne:


    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
    dg = new DataGrid;
    	dg.percentWidth = 60;
    	dg.percentHeight = 30;
    	dg.dataProvider= xml.children;
     
     
     
    	col1 = new DataGridColumn;
    	col1.headerText ="nom";
    	col1.labelFunction = getLabelName;
     
     
     
    	mydp = new Array;
    	mydp.push(col1);  
    	dg.columns = mydp;
     
     
    		private function getLabelName(item:Object, col1:DataGridColumn):String
       		{
         		return item.xml.children.prenom;
       		}
    Je n'ai pas d'erreurs de compilation mais pas rien ne s'affiche par contre dans le datagrid...

  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
    Points : 3 189
    Points
    3 189
    Par défaut
    ce n'est pas plutot ?
    regarde ton dataprovider

    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 averti 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
    Points : 310
    Points
    310
    Par défaut parsing XML
    Bonjour, j'avoue xml j'aime pas trop m'amuser avec dans des conditions comme les tiens je parse mon xml et je le met dans des objet que je crée moi même et puis je les mis dans mon dataGrid en gros si je prend ton exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <Personne>
      <ID>2</ID> 
      <Nom>Martin</Nom>
      <Prenom>Jean</Prenom>
    </Personne>
    le parsing
    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
     
    var myDataProvider : ArrayCollection = new ArrayCollection();
     
    private function parseMyXml (xmlResult : XML):void
    {
     
         for each (propertyPersonne in xmlResult.children())
         {
    	 var personneVO : PersonneVO = new PersonneVO();
             var propertyType : String = propertyPersonne.localName();
    	 var propertyValue : String = propertyPersonne;
    	 switch ( propertyType)
    	{
    	  case 'ID' :
    	        personneVO.id = propertyValue;
    	   break ;
    	  case 'Nom':
    	       personneVO.nom = propertyValue;
    	   break ;
    	  case 'Prenom' :
    	       personneVO.prenom = propertyValue;
    	  break ;
          }
           // je rajoute mon personneVO dans un arrayCollection
           myDataProvider.addItem(personneVO)
    }

    aprés ce parsing tu resort avec un arrayCollection tu l'affecte au dataProvider du dataGrid et voila normalement tu aura tous qui s'affiche bien par contre il faut pas oublié les bon labelField


    Bon courage
    http://www.m-ataf.com (En cours de construction)

  12. #12
    Membre du Club
    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
    Points : 65
    Points
    65
    Par défaut
    Hum possible mais là j'aurais juste deux questions à poser:


    - Est ce que le item:Object est à déclarer ailleurs ?


    De plus je viens de constater un problème, le lien entre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    col1.labelFunction = getLabelName
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    private function getLabelName(item:Object, col1:DataGridColumn):String
       		{
    		Alert.Show("hello");
         		return item.xml.children.prenom;
       		}
    ne semble pas fonctionner car je n'ai pas d'alerte :s
    Par contre je n'ai pas d'erreurs

    Merci

    p.s: Merci samy2525 si ça ne marche pas je vais essayer de m'inspirer de ton code car là je désespère

  13. #13
    Membre du Club
    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
    Points : 65
    Points
    65
    Par défaut
    Je crois que je vais faire comme tu m'as dis Samy2525 en convertissant mon xml en arraycollection. Par contre je n'ai pas très bien compris ton code surtout les personneVO qui n'existent pas chez moi. :s

    p.s: si quelqu'un a un lien vers un tuto qui explique la conversion xml en arraycollection ca serait sympa de le poster
    Merci

  14. #14
    Membre averti 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
    Points : 310
    Points
    310
    Par défaut
    y a pas une solution miracle en faite tu parse ton XML et tu les mis dans un objet dans l'exemple de l'xml que tu as posté <Personne> </Personne>

    donc je te disais il faut creer un objet de type PersonneVO dont les attribut seront tes entrée XML (ID, Nom, Prenom)

    donc si en revanche ton XML parle de <Agenda></Agenda> à ce moment la tu creer un objet AgendaVo tu vois un peu ce ke je veux te faire comprendre, le parsing que je t'ai donné en code est simple à comprendre

    voila j'espere avoir repondu à ta demande

    Bon courage
    http://www.m-ataf.com (En cours de construction)

  15. #15
    Membre du Club
    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
    Points : 65
    Points
    65
    Par défaut
    Oui merci tu m'as beaucoup aidé, je vais essayé d'appliquer ça.
    C'est pas gagné mais je vais essayé

  16. #16
    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
    Points : 3 189
    Points
    3 189
    Par défaut
    Utilise un point d'arret pour vérifier la bonne construction de ton code et le passage dans ta labelFunction


    Pour la solution de Samy , ca peut etre utile de passer par des VO (Value Object) mais si tu ne réutilises pas les données et sont juste récupérées via un webservices pour etre affichées , la conversion en ArrayCollection ne sert à rien.
    PersonneVO c'est normal que tu ne l'ai pas, c'est une classe d'un Value Object que Samy utilise

    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

  17. #17
    Membre du Club
    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
    Points : 65
    Points
    65
    Par défaut
    Merci merci,

    J'ai peut etre détecté le problème:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    col1.labelFunction = getLabelName
    se trouve dans une override protected function et :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    private function getLabelName(item:Object, col1:DataGridColumn):String
       		{
    		Alert.Show("hello");
         		return item.xml.children.prenom;
       		}
    a l'extérieur du overide, est ce que ça peut venir de là ?

  18. #18
    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
    Points : 3 189
    Points
    3 189
    Par défaut
    hum? tu veux dire que tu doute de l'appel d'une fonction depuis une fonction surchargée? y'a aucun souci ou alors j'ai raté qq chose

    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

  19. #19
    Membre du Club
    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
    Points : 65
    Points
    65
    Par défaut
    lol bon faisons comme si je n'avais rien dis lol

    J'ai du mal avec le debugeur flex, tout ce que j'arrive à voir c'est que le datafield de col1 vaut null...
    Ce qui ma foi est logique vu que rien ne s'affiche dans mon datagrid.

  20. #20
    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
    Points : 3 189
    Points
    3 189
    Par défaut
    As tu vérifié le dataProvider de ton datagrid en mode debug ? Cela correspond bien à ce que tu souhaites? Ta labelFunction n'est pas appelée car ton item en null donc aucun besoin de le mettre en forme. Tu as un souci du donné, tu as du faire une erreur dans ton dataprovider et/ou ton datafield au niveau des noeuds xml avec l'E4X

    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

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Afficher .xml dans TextBox
    Par torkal dans le forum Windows Forms
    Réponses: 15
    Dernier message: 10/11/2009, 17h11
  2. [ XML ][ XSL ][ JSP ] afficher du xml dans une JSP
    Par zozolh2 dans le forum Servlets/JSP
    Réponses: 9
    Dernier message: 17/07/2009, 20h34
  3. Réponses: 0
    Dernier message: 09/03/2009, 00h30
  4. afficher du xml dans un datagrid
    Par koromac dans le forum ASP.NET
    Réponses: 2
    Dernier message: 24/09/2007, 09h32
  5. Réponses: 13
    Dernier message: 14/06/2004, 15h35

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