Précédent   Forum du club des développeurs et IT Pro > Webmasters - Développement Web > Flash/Flex > Flex
Flex Forum d'entraide sur la programmation Adobe Flex : applications Internet riches (RIA)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 23/11/2012, 15h22   #1
lou87
Membre régulier
 
Avatar de lou87
 
Inscription : février 2006
Messages : 368
Détails du profil
Informations personnelles :
Âge : 25

Informations forums :
Inscription : février 2006
Messages : 368
Points : 89
Points : 89
Par défaut Recherche de données précises dans un Object

Bonjour,

J'aimerais pouvoir rechercher des informations précises dans un objet que j'ai réussi à récupérer.

Je m'explique : j'ai un tableau croisé et quand je coche une des checkbox, la méthode me retourne l'objet qui a été modifié.

Cette objet se présente sous cette forme:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
(Object)#0
  col1 = false
  col2 = false
  col3 = true
  col4 = false
  col5 = true
  col6 = true
  col7 = false
  col8 = false
  col9 = false
  col10 = false
  col11 = false
  ligne = "A"
Et j'aimerais réussir à récupérer seulement dans cet objet la/les colonne(s) qui est à true, ainsi que la ligne, autrement dit dans mon exemple "A", "col3", "col5" et "col6".

Comment puis-je procéder s'il vous plaît ?

En vous remerciant.
__________________
Programmer c'est comme gravir une montagne...
Il faut procéder par étapes...
(? auteur ?)
Un seul être vous manque et tout est dépeuplé.
Lamartine (merci chat hotplug ^^)
lou87 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2012, 16h17   #2
Jim_Nastiq
Rédacteur/Modérateur
 
Avatar de Jim_Nastiq
 
Homme Jean-Marie Macé
Architecte, Expert Flex
Inscription : avril 2006
Messages : 2 306
Détails du profil
Informations personnelles :
Nom : Homme Jean-Marie Macé
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 306
Points : 3 270
Points : 3 270
Salut,

voici une solution codé vite fait.

Soit obj ton Object d'origine et objOutput ton Object que tu souhaites
Code :
1
2
3
4
5
 
for(var id:String in obj) {
if((obj[id] == true) || (id == 'ligne'))
  objOutput[id] = obj[id];
}
__________________

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
Jim_Nastiq est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2012, 11h38   #3
lou87
Membre régulier
 
Avatar de lou87
 
Inscription : février 2006
Messages : 368
Détails du profil
Informations personnelles :
Âge : 25

Informations forums :
Inscription : février 2006
Messages : 368
Points : 89
Points : 89
Bonjour Jim_Nastiq !

Merci beaucoup de m'avoir répondu si vite.

Citation:
Envoyé par Jim_Nastiq Voir le message
Soit obj ton Object d'origine et objOutput ton Object que tu souhaites
Code :
1
2
3
4
5
 
for(var id:String in obj) {
if((obj[id] == true) || (id == 'ligne'))
  objOutput[id] = obj[id];
}
J'ai essayé votre code et pour l'instant il ne me renvoie aucune donnée...
Et adobe flash player m'envoie comme erreur :
Citation:
"TypeError: Error #1009: Il est impossible d'accéder à la propriété ou à la méthode d'une référence d'objet nul."
Donc je suppose que l'object objOutput ne reçoit aucune donnée (car pour vérification je demande au code de m'afficher le résultat dans un Alert.show()).

Donc je pense que j'ai peut être mal interprété/compris, le code que vous m'avez donné.
Le obj est bien l'object sélectionné qui m'est retourné, c'est bien ça ?

Et pour le id, c'est l'identifiant de la donnée se trouvant dans mon object c'est bien ça ? Comme par exemple "col1", "col2", etc... ?

Si c'est bien ça me donne ceci :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
var Select:Object;
var objOutput:Object;
//récupération de l'object sélectionné dans le datagrid
Select = datagrid.selectedItem;
Alert.show("Objet sélectionné :"+ObjectUtil.toString(Select));
// L'alert me retourne bien l'object sélectionné/modifié
 
for(var id:String in Select) {
if((Select[id] == true) || (Select[id] == 'ligne'))
objOutput[id] = Select[id];
}
 
Alert.show("infos utiles " +objOutput[id]);
// l'alert ne s'enclenche pas car le objOutput[id] ne semble pas avoir reçu de données
Pourriez-vous me dire si j'ai mal compris votre code, s'il vous plaît ?

En vous remerciant.
__________________
Programmer c'est comme gravir une montagne...
Il faut procéder par étapes...
(? auteur ?)
Un seul être vous manque et tout est dépeuplé.
Lamartine (merci chat hotplug ^^)
lou87 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2012, 14h07   #4
lou87
Membre régulier
 
Avatar de lou87
 
Inscription : février 2006
Messages : 368
Détails du profil
Informations personnelles :
Âge : 25

Informations forums :
Inscription : février 2006
Messages : 368
Points : 89
Points : 89
Après de multiples essais pour réussir à récupérer ce dont j'ai besoin, je suis revenue à la méthode que m'a donné Jim_Nastiq, et cette fois-ci ça fonctionne.... C'est à rien n'y comprendre.

Merci beaucoup Jim_Nastiq !!!

Mais bon ça fonctionne et c'est l'essentiel, cependant j'ai dû modifier un peu le code pour récupérer et la colonne/checkbox modifiée et la ligne, ce qui donne ceci :
Attention ça va brûler les yeux car c'est un peu (beaucoup) fait de manière brouillonne.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
var Select:Object;
var objOutput:Object;
Select = datagrid.selectedItem;
Alert.show("Objet sélectionné :"+ObjectUtil.toString(Select));
 
for (var id:String in Select)    {
      if(Select[id] == true || Select[id] == 'ligne'){
            // ici j'arrive à afficher la checkbox qui a été modifié
            Alert.show("(dans la boucle) value id : "+id);
            var id2:String;
            id2 = 'ligne';
            var ligneSelected:String = Select[id2];
            // ici j'affiche la ligne en question
            Alert.show("infos utiles ligneSelected " +ligneSelected);
        }
}
__________________
Programmer c'est comme gravir une montagne...
Il faut procéder par étapes...
(? auteur ?)
Un seul être vous manque et tout est dépeuplé.
Lamartine (merci chat hotplug ^^)
lou87 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2012, 15h47   #5
Jim_Nastiq
Rédacteur/Modérateur
 
Avatar de Jim_Nastiq
 
Homme Jean-Marie Macé
Architecte, Expert Flex
Inscription : avril 2006
Messages : 2 306
Détails du profil
Informations personnelles :
Nom : Homme Jean-Marie Macé
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 306
Points : 3 270
Points : 3 270
Si votre problème est résolu, merci de penser au tag Résolu (bouton en bas de page)
__________________

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
Jim_Nastiq est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2012, 16h17   #6
lou87
Membre régulier
 
Avatar de lou87
 
Inscription : février 2006
Messages : 368
Détails du profil
Informations personnelles :
Âge : 25

Informations forums :
Inscription : février 2006
Messages : 368
Points : 89
Points : 89
Oui, oui ^_^

J'attendais juste de faire quelques tests afin de voir si d'autres problèmes n'apparaissaient pas.

Mais c'est tout bon.

Merci encore Jim_Nastiq.
__________________
Programmer c'est comme gravir une montagne...
Il faut procéder par étapes...
(? auteur ?)
Un seul être vous manque et tout est dépeuplé.
Lamartine (merci chat hotplug ^^)
lou87 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 07h04.


 
 
 
 
Partenaires

Hébergement Web