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 :

List dataProvider et itemRenderer


Sujet :

Flex

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Watier_53
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    469
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 469
    Par défaut List dataProvider et itemRenderer
    J'ai un soucis avec les éléments du titre.

    Je m'explique : je possède une liste dont l'itemRenderer est une classe cellule.

    Jusque là pas de problème.

    Ensuite ce composant a des états. Soit normal soit editable. Suivant l'état on a un label ou un textInput. La encore aucun soucis je parviens à avoir ces éléments dans ma liste.

    Le problème vient au moment de créer des objets que je vais mettre dans un arrayCollection et qui va me servir à remplir le dataProvider de ma liste.

    Imaginons que je créer un objet en précisant par exemple le currentState (etat) à normal.

    Puis un second. Je me trouve avec deux éléments dans ma liste : c'est à dire deux objets de la classe cellulle.

    Si maintenant j'ajoute à ma classe cellule une méthode creationComplete et dans celle ci je mets une fenetre d'alerte pour me prevenir lors de la création de l'objet.

    C'est là que je comprend pas, bien qu'ayant seulement deux objets dans ma liste la fenêtre d'alerte apparait trois fois.

    Je ne sais pas si j'ai bien compris le concept mais je trouve cela étrange et gênant car je ne parviens pas à faire ce que je souhaite.

    Merci pour vos réponses futures.

  2. #2
    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
    Par défaut
    un petit bout de code?


    sinon juste une question de curiosité pour tes champs editable ou non ,pourquoi ne pas avoir le meme composant textinput ou tu modifies simplement l'attribut editable ?

    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

  3. #3
    Membre éclairé Avatar de Watier_53
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    469
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 469
    Par défaut
    oui c'est pas bête pour le texte input !!! quant au reste je peux pas te donner de code car il est trop conséquent ! mais comprend tu de koi je parle? c'est pas facile à expliquer pour moi !

  4. #4
    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
    Par défaut
    je vois de quoi tu parles mais pour t'aider il faudrait dans l'absolue que je puisse tester chez moi, et il faudrait au moins voir comment tu alimentes ton arrayCollection, comment tu affiches ta popup bref tout les points qui peuvent etre sujet à probleme, histoire de cercler la source du problème...

    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

  5. #5
    Membre éclairé Avatar de Watier_53
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    469
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 469
    Par défaut
    J'ai refait un programme simple qui jepense peut résumer tout mes problèmes.
    Ne voit aucun intérêt à ce programme c'est juste pour te montrer ce qui ne va pas.

    Premier fichier main.mxml :
    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
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical"  creationComplete="init()">
    	<mx:Script>
    		<![CDATA[
    			import mx.collections.ArrayCollection;
    			public function init():void
    			{
    				var ac:ArrayCollection = new ArrayCollection();
    				var o:Object = new Object();
    				var o2:Object = new Object();
    				o= {nom:"Dupont",prenom:"Jean",mail:"dupont@mail.fr",currentState:"Viewable"};
    				o2= {nom:"Baptiste",prenom:"Pierre",mail:"baptiste@mail.fr",currentState:"ViewableMail"};
    				ac.addItem(o);
    				ac.addItem(o2);
    				liste.dataProvider = ac;
     
    			}
    		]]>
    	</mx:Script>
    	<mx:HBox width="100%">
    		<mx:List id="liste" itemRenderer="{new ClassFactory(composantcell)}" width="150" height="200"/>
    	</mx:HBox>
     
    </mx:Application>
    Deuxième fichier composantcell.mxml
    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
    <?xml version="1.0" encoding="utf-8"?>
    <mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml" width="150" height="30" currentState="{data.currentState}" creationComplete="affiche()">
    	<mx:Script>
    		<![CDATA[
    			import mx.controls.Alert;
     
    			public function affiche():void
    			{
    				Alert.show(nom.text+" ");	
    			}
    		]]>
    	</mx:Script>
    	<mx:states>
    		<mx:State name="Viewable">
    			<mx:AddChild relativeTo="{this}" position="lastChild">
                    <mx:target>
                        <mx:Label id="nom"  text="{data.nom}" />
                    </mx:target>
                </mx:AddChild>
                <mx:AddChild relativeTo="{this}" position="lastChild">
                    <mx:target>
                        <mx:Label id="prenom"  text="{data.prenom}" />
                    </mx:target>
                </mx:AddChild>
            </mx:State>
    		<mx:State name="ViewableMail">
    			<mx:AddChild relativeTo="{this}" position="lastChild">
                    <mx:target>
                        <mx:Label id="mail"  text="{data.mail}" />
                    </mx:target>
                </mx:AddChild>
            </mx:State>
        </mx:states>
    </mx:HBox>
    Ce code affiche une liste de deux éléments : chaque élément à un état différent.
    Pour chaque élément j'appelle une méthode affiche. Cet méthode me fait une fenetre Alert m'affichant le nom de la personne.

    Pourquoi lors du lancement de l'appli Baptitse apparait deux fois alors que je l'ai créé qu'une seule fois !!???

  6. #6
    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
    Par défaut
    en effet ce comportement parait etrange(y'a surement une logique qui nous echape) , je pense(a tord surement) qu'a la creation de ton application(Main) il instancie ton composant(composantcell) et qu'ensuite il instancie le composant a chaque item...

    je ne vois que ca...

    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

  7. #7
    Membre éclairé Avatar de Watier_53
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    469
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 469
    Par défaut
    voici les infos du debugger ;

    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
    [SWF] C:\Documents and Settings\bechu\My Documents\Flex Builder 3\test\bin-debug\test.swf - 878 996 bytes after decompression
    warning: unable to bind to property 'currentState' on class 'Object' (class is not an IEventDispatcher)
    warning: unable to bind to property 'prenom' on class 'Object' (class is not an IEventDispatcher)
    warning: unable to bind to property 'mail' on class 'Object' (class is not an IEventDispatcher)
    warning: unable to bind to property 'nom' on class 'Object' (class is not an IEventDispatcher)
    warning: unable to bind to property 'currentState' on class 'Object' (class is not an IEventDispatcher)
    warning: unable to bind to property 'prenom' on class 'Object' (class is not an IEventDispatcher)
    warning: unable to bind to property 'mail' on class 'Object' (class is not an IEventDispatcher)
    warning: unable to bind to property 'nom' on class 'Object' (class is not an IEventDispatcher)
    warning: unable to bind to property 'currentState' on class 'Object' (class is not an IEventDispatcher)
    warning: unable to bind to property 'prenom' on class 'Object' (class is not an IEventDispatcher)
    warning: unable to bind to property 'mail' on class 'Object' (class is not an IEventDispatcher)
    warning: unable to bind to property 'nom' on class 'Object' (class is not an IEventDispatcher)
    warning: unable to bind to property 'currentState' on class 'Object' (class is not an IEventDispatcher)
    warning: unable to bind to property 'prenom' on class 'Object' (class is not an IEventDispatcher)
    warning: unable to bind to property 'mail' on class 'Object' (class is not an IEventDispatcher)
    warning: unable to bind to property 'nom' on class 'Object' (class is not an IEventDispatcher)
    warning: unable to bind to property 'currentState' on class 'Object' (class is not an IEventDispatcher)
    warning: unable to bind to property 'prenom' on class 'Object' (class is not an IEventDispatcher)
    warning: unable to bind to property 'mail' on class 'Object' (class is not an IEventDispatcher)
    warning: unable to bind to property 'nom' on class 'Object' (class is not an IEventDispatcher)

  8. #8
    Membre éclairé Avatar de Watier_53
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    469
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 469
    Par défaut
    en modifiant ainsi je n'ai plus de wrning mais tjrs le meme comportement
    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
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical"  creationComplete="init()">
       <mx:Script>
          <![CDATA[
             import mx.collections.ArrayCollection;
             import mx.utils.ObjectProxy;
             public function init():void
             {
                var ac:ArrayCollection = new ArrayCollection();
                var o:Object= {nom:"Dupont",prenom:"Jean",mail:"dupont@mail.fr",currentState:"Viewable"};
                var o2:Object = {nom:"Baptiste",prenom:"Pierre",mail:"baptiste@mail.fr",currentState:"ViewableMail"};
     
                var result:Array = new Array();
                result.push(o);
                result.push(o2);
                for(var i:String in result) result[i] = new ObjectProxy(result[i]);
                   ac = new ArrayCollection(result);
                liste.dataProvider = ac;
             }
          ]]>
       </mx:Script>
       <mx:HBox width="100%">
          <mx:List id="liste" itemRenderer="composantcell" width="150" height="200"/>
       </mx:HBox>
     
    </mx:Application>

  9. #9
    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
    Par défaut
    tu peux toujours utiliser une solution de contournement qui consisterais a ignorer le 1er creationComplete, tu obtiendrais le comportement souhaité . Mais ce n'ets qu'une solution de contournement je te l'accorde

    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

  10. #10
    Membre éclairé Avatar de Watier_53
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    469
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 469
    Par défaut
    oui mais non ! car derrière j'ai un bug quand j'applique un evenement sur l'un des objets de ma liste ! ça lance d'autre évenements non souhaité !

    En fait j'ai déjà trouvé une autre alternative qui est d'utiliser une VBox mais je voudrais comprendre ce comportement douteux.

    Et pour le moment personne ne peut me répondre ni ici ni dans d'autre forum !

Discussions similaires

  1. List et ItemRenderer
    Par black is beautiful dans le forum Flex
    Réponses: 4
    Dernier message: 27/03/2010, 16h13
  2. Sélection avec un ItemRenderer dans une List
    Par black is beautiful dans le forum Flex
    Réponses: 0
    Dernier message: 24/03/2010, 00h10
  3. [Flex3] dataProvider dans un ItemRenderer
    Par Alwin dans le forum Flex
    Réponses: 5
    Dernier message: 02/09/2009, 11h11
  4. List itemRenderer et RadioButton
    Par olidev36 dans le forum Flex
    Réponses: 10
    Dernier message: 06/11/2008, 16h40
  5. recuperer une liste de dataProvider
    Par charlix dans le forum Flash
    Réponses: 4
    Dernier message: 28/08/2008, 23h46

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