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 :

Manipulation du selectedItem


Sujet :

Flex

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    84
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2009
    Messages : 84
    Par défaut Manipulation du selectedItem
    Salut à tous,

    je souhaiterai alimenter un constructeur en utilisant la propriété selectedItem. mais apparemment le constructeur reste vide je ne comprends pas voilà ce que j'ai fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    private function datagrid_itemClick(evt:ListEvent):void {
     
    				var unUsager : Usager = new Usager(SimpleList.selectedItem.nom, SimpleList.selectedItem.prenom,
    				SimpleList.selectedItem.dateNaiss, SimpleList.selectedItem.lieuNaiss, SimpleList.selectedItem.nationalite,
    				SimpleList.selectedItem.Sexe, SimpleList.selectedItem.numSecu);
     
    				arrayBis.addItem(Usager(unUsager));
    				myDataGrid.dataProvider=arrayBis;
    				myTabNavigator.selectedIndex=3;
    j'ai l'erreur suivante :

    Main Thread (Suspended: ArgumentError: Error #1063: Non-correspondance du nombre d'arguments sur proto.flex.web::Usager(). 7 prévu(s), 0 détecté(s).)
    ObjectInput/readObject [no source]
    mx.collections::ArrayList/readExternal
    mx.collections::ArrayCollection/readExternal
    ObjectInput/readObject [no source]
    mx.messaging.messages::AbstractMessage/readExternal
    mx.messaging.messages::AsyncMessage/readExternal
    mx.messaging.messages::AcknowledgeMessage/readExternal
    pourquoi je ne peux pas créer un objet directement coté client ?

    Cordialement,

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

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

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

    tu peux juste faire un trace au début de ta fonction pour afficher ce qu'il y a dans chaque champ stp ? et vérifier que ces champs ne sont pas vides ? (comme tu l'as dit, à priori ils le sont).

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    84
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2009
    Messages : 84
    Par défaut
    ça va sans doute te sembler très con mais je ne vois pas de quoi tu parle ...

    c'est une fonction de debug ?

    Cordialement,

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

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

    Informations forums :
    Inscription : Novembre 2008
    Messages : 545
    Par défaut
    non en fait c'est juste un moyen d'afficher quelquechose sur ta sortie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    trace (SimpleList.selectedItem.nom);
    par exemple.

    Tu vois ?


    Ou effectivement, place un breakpoint juste avant et jette un coup d'oeil sur tes valeurs au moment où tu rentres dans ta fonction.
    [EDIT] : pardon j'ai oublié de préciser que le trace fonctionne avec le Debug

  5. #5
    Membre éclairé Avatar de ToniConti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2009
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Novembre 2009
    Messages : 245
    Par défaut
    Salut,
    C'est comme les alertes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    trace(SimpleList.selectedItem.nom);
    trace(SimpleList.selectedItem.prenom);
    etc...
    Tu as vu juste, il faut que tu compiles en mode debug et que tu ouvres la console.
    Ça te permettra de voir ce que tu envoies à ton constructeur.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    84
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2009
    Messages : 84
    Par défaut
    Au niveau de mes variables c'est simple ya rien

    j'étais en mode debug j'arrive direct sur l'erreur du dessus ya rien au niveau de mes variables mais je soupçonne le constructeur de ne rien recevoir l'objet unUsager n'est pas instancié...

    En fait mon idée première était de récupérer les propriétés de l'item créer un objet ensuite l'ajouter dans une ArrayList et fournir mon arrayList au dataProvider d'un datagrid.

    j'espere n'etre pas trop confus

    Cordialement,

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

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

    Informations forums :
    Inscription : Novembre 2008
    Messages : 545
    Par défaut
    Non non c'est limpide.

    A priori s'il n'est pas instancié c'est bien que les paramètres que tu passes dans le constructeur sont vides (d'où l'erreur).

    Donc a priori il y a un soucis avec ta liste: en fait le problème est tres simple, en cliquant sur un objet dans ta liste, tu ne récupère aucune donnée. Est-ce que ta liste est bien remplie avec les bonnes données ?

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    84
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2009
    Messages : 84
    Par défaut
    oui apparemment ma liste est bien remplie j'ai utilisé des Alert.show il m'affiche bien les valeurs voulues.

    et coté serveur ? ya rien a faire?

    peut être qu'au lieu de casser les dents a vouloir créer mon obj coté client je peux le créer cote serveur j'utilise un Remote Object qu'en penses tu?

    c'est jouable à ton avis?

    la premiere me parait plus simple qd meme...


    Cordialement,

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

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

    Informations forums :
    Inscription : Novembre 2008
    Messages : 545
    Par défaut
    C'est jouabel effectivement, mais tu ferais 1 aller-retour server inutile à mon avis.

    Juste pour être certain, tu as bien mis tes "trace" au debut de ta fonction datagrid_itemClick ? ils ne t'affichent rien ?, as tu toujours le focus sur ta liste (est-ce que le champs sélectionné apparait toujours comme étant sélectionné) ?

    manifestement, tu perds les données sélectionnées quelquepart avant l'appel à la fonction datagrid_itemClick si c'est le cas

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    84
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2009
    Messages : 84
    Par défaut
    Bonjour,

    n'arrivant pas a utiliser le constructeur pour une raison que j'ignore j'ai voulu utiliser les setters qd je debug j'ai bien les bonne valeur mais au moment ou j'ajoute mon obj dans la collection l'objet est nul je ne comprends voici tous les elements ça peu aider

    la classe en AS :

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    package proto.flex.web
    {
    	[RemoteClass(alias="proto.flex.service.Usager")]
    	public class Usager
    	{
    		public var nom : String; 
    		public var prenom : String;
    		public var dateNaiss : String;
    		public var lieuNaiss : String;
    		public var nationalite : String;
    		public var sexe : Boolean;
    		public var numSecu : Number;
     
    		public function Usager(){}
     
    		public function setNom(value: String) :void {
    			this.nom=value;
    		}
    		public function setPrenom(value:String):void{
    			this.prenom=value;
    		}
    		public function setDateNaiss(value:String):void {
    			this.dateNaiss=value;
    		}
    		public function setLieuNaiss(value: String):void{
    			this.lieuNaiss=value;
    		}
    		public function setNationalite(value:String): void{
    			this.nationalite=value;
    		}
    		public function setSexe(value : Boolean):void{
    			this.sexe=value;
    		}
    		public function setNumSecu (value : Number): void{
    			this.numSecu=value;	
    		}
    	}
    }
    la meme classe en java coté serveur

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
     
    package proto.flex.service;
     
    import java.text.SimpleDateFormat;
    import java.util.Date;
     
    public class Usager {
     
    	private String nom;
    	private String Prenom;
    	private Date DateNaiss;
    	private String lieuNaiss;
    	private String nationalite;
    	private Boolean sexe;
    	private int numSecu;
     
     
    	public Usager(String pNom, String pPrenom, String pDateNaiss, String pLieuNaiss, String pNationalite, Boolean pSexe, int pNumSecu ) throws Exception{
     
    		this.nom=pNom;
    		this.Prenom=pPrenom;
    		this.DateNaiss=stringToDate(pDateNaiss);
    		this.lieuNaiss=pLieuNaiss;
    		this.nationalite=pNationalite;
    		this.sexe=pSexe;
    		this.numSecu=pNumSecu;
    	} 
     
    	public Usager(){
    		// default constructor
    	}
     
    	public String getNom() {
    		return nom;
    	}
     
     
    	public void setNom(String nom) {
    		this.nom = nom;
    	}
     
     
    	public String getPrenom() {
    		return Prenom;
    	}
     
     
    	public void setPrenom(String prenom) {
    		Prenom = prenom;
    	}
     
     
    	public Date getDateNaiss() {
    		return DateNaiss;
    	}
     
    	public void setDateNaiss(Date dateNaiss) {
    		DateNaiss = dateNaiss;
    	}
     
     
    	public String getLieuNaiss() {
    		return lieuNaiss;
    	}
     
     
    	public void setLieuNaiss(String lieuNaiss) {
    		this.lieuNaiss = lieuNaiss;
    	}
     
     
    	public String getNationalite() {
    		return nationalite;
    	}
     
     
    	public void setNationalite(String pNationalite) {
    		this.nationalite=pNationalite;
    	}
     
     
    	public Boolean getSexe() {
    		return sexe;
    	}
     
     
    	public void setSexe(Boolean sexe) {
    		this.sexe = sexe;
    	}
     
     
    	public int getNumSecu() {
    		return numSecu;
    	}
     
     
    	public void setNumSecu(int numSecu) {
    		this.numSecu = numSecu;
    	}
     
    	public static Date stringToDate(String pDate) throws Exception {
    		String sFormat="dd/MM/yyyy";
            SimpleDateFormat sdf = new SimpleDateFormat(sFormat);
            return sdf.parse(pDate);
    	}
     
    }
    qd je debug j'ai ajouter des trace dans la methode datagrid_itemClick(event) j'ai bien les bonne valeurs qd j'utilise les setters :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    	trace(lUsager.setNom(SimpleList.selectedItem.nom));
    				trace(lUsager.setPrenom(SimpleList.selectedItem.prenom));
    				trace(lUsager.setDateNaiss(SimpleList.selectedItem.dateNaiss));
    				trace(lUsager.setLieuNaiss(SimpleList.selectedItem.lieuNaiss));
    				trace(lUsager.setNationalite(SimpleList.selectedItem.nationalite));
    				trace(lUsager.setSexe(SimpleList.selectedItem.sexe));
    				trace(lUsager.setNumSecu(SimpleList.selectedItem.numSecu));
     
    				// on ajoute l'usager a la collection 
    				arrayBis.addItem(Usager(lUsager));<-- c'est au moment de l'ajout que je perds mes données mais d'ou ça vient?
    cordialement,

  11. #11
    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
    Tout cela est un peu confus.
    Tu nous montre des bouts de code mais rien qui permette d'avoir une vision précise de tous les points critiques...

    Par ailleurs tu peux me dire ce qui est affiché dans la trace avec :
    trace(lUsager.setNom(SimpleList.selectedItem.nom));
    ...
    Dans la mesure où setNom ne renvoie rien !

    De même pourquoi tu fait un transtypage de lUsager en Usager puisque c'est apparemment déjà le type de la variable ??
    arrayBis.addItem(Usager(lUsager));

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    84
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2009
    Messages : 84
    Par défaut
    merci pour ta réponse

    je n'ai pas été assez clair et précis au niveau de mon vocabulaire desolé.

    pour le setNom je ne voulais pas dire qu'il renvoie une valeur en fait, mais qu'il modifie bien ma valeur. donc il remplit son role de modificateur.

    deuxieme chose pour le transtypage c'est une erreur de ma part parce qu' à la base je faisais une itération sur une collection d'item d'ou le transtypage.

    en théorie ce que je veux faire est assez simple mais je n'arrive pas à le mettre en oeuvre.

    l'idee c'est de créer un obj a partir des propriétés récupérées via la méthode selectedItem.

    mais que ça soit coté flex ou coté serveur je galere encore... mais je ne perds pas espoir

    en tous les cas merci

    Cordialement

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    84
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2009
    Messages : 84
    Par défaut Suite et Fin...
    Bonjour à tous

    J'ai trouvé la solution à mon souci et tout roule

    Je vous rappelle l'énoncé :

    je voulais récupérer les propriétés d'un item via la méthode SelectedItem créer mon nouvel objet grâce à celle-ci.

    Mais j'avais un souci au niveau du champs date de Naissance [dateNaiss] qui côté flex avait un type String et qui coté serveur (java) était de type Date.

    J'ai donc changé la propriété côté flex de String à Date et j'ai créer la méthode StringToDate voilà à quoi elle ressemble :

    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
    27
    28
    29
    30
    31
    32
    33
     
     	private function dateToString(dateString:String):Date {
     
    	    // DATE US
     
    	   /* var day:int = int(dateString.substr(8,2));
        	var month:int = int(dateString.substr(5,2))-1;
        	var year:int = int(dateString.substr(0,4));*/
     
        	// Date FR 
     
        	var day:int = int(dateString.substr(0,2));
        	var month:int = int(dateString.substr(3,2))-1;
        	var year:int = int(dateString.substr(6,10));
     
        	var hour:int = 0;
    	    var minute:int = 0;
        	var second:int = 0;
     
    		if ( dateString == null ) {
        	    return null;
        	}
     
        	if ( year == 0 && month == 0 && day == 0 ) {
            return null;
        	}
     
    	    if ( dateString.length == 10 ) {
        	    return new Date(year, month, day);
        	}
     
        return new Date(year, month, day, hour, minute, second);
    	}
    dans la méthode list_ItemClick() n'ayant plus de souci de conversion j'ai pû créer mon objet tranquillement via les setters comme ceci :
    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
     
    	private function list_itemClick(evt:ListEvent):void {
     
    		var lUsager:Usager=new Usager()
    		lUsager.setNom(SimpleList.selectedItem.nom);
    		lUsager.setPrenom(SimpleList.selectedItem.prenom)
    		lUsager.setDateNaiss(SimpleList.selectedItem.dateNaiss);
    		lUsager.setLieuNaiss(SimpleList.selectedItem.lieuNaiss);
    		lUsager.setNationalite(SimpleList.selectedItem.nationalite);
    		lUsager.setSexe(SimpleList.selectedItem.sexe);
    		lUsager.setNumSecu(SimpleList.selectedItem.numSecu);
     
    		// on supprime  toutes les entrées pour ne garder que celle cliqué
    		arrayBis.removeAll();
    		// on ajoute l'usager selectionné
    		arrayBis.addItem(lUsager);
    		}
    voilà si vous voulez plus de détails ya qu'à demander

    ps : la devise de l'histoire c'est qu'à mon avis il faut essayer de garder les mêmes type de données que ce soit du coté flex ou java

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

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

    Informations forums :
    Inscription : Novembre 2008
    Messages : 545
    Par défaut
    Impec si tu as trouvé.


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

Discussions similaires

  1. Manipulation des handle contexte
    Par rockbiker dans le forum DirectX
    Réponses: 1
    Dernier message: 09/05/2003, 18h51
  2. Manipuler JAVA et SSL ?
    Par jah dans le forum Sécurité
    Réponses: 6
    Dernier message: 05/05/2003, 00h30
  3. [VB6]manipuler les semaines en VB ?
    Par kamadji dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 02/05/2003, 12h33
  4. Réponses: 2
    Dernier message: 18/01/2003, 17h06
  5. Fonctions de manipulation des chaines et des dates
    Par Fares BELHAOUAS dans le forum Débuter
    Réponses: 3
    Dernier message: 09/11/2002, 22h43

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