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 :

ArrayCollection AMFPHP et databinding


Sujet :

Flex

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Inscrit en
    Mars 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 2
    Par défaut ArrayCollection AMFPHP et databinding
    Bonjour à tous,
    je suis bloqué avec ce probléme :

    Je suis en train de développer un jeux en flex et voici un morceau du probléme :

    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
     
     
    [Bindable]
    public var classement:ArrayCollection = new ArrayCollection;
     
    private function init():void
    {
    classement.addEventListener(CollectionEvent.COLLECTION_CHANGE,maFonction);
    }
     
     
    public function getClassementOfTournoisResult(evt:ResultEvent):void
    {
    classement = ArrayCollection(evt.result);
    }
     
    private function maFonction():void
    {
    Alert.show("toto");
    }
    Quand classement ce met à jour maFonction n'est jamais appelé.

    Je souhaite que maFonction soit appelé uniquement quand le retour de AMFPHP est diffèrent de celui stocké dans mon arrayCollection.

    J'ai tenter de stocké dans un Array les infos renvoyer par AMFPHP et ensuite de déclarer comme source de mon ArryCollection ce Array.
    Comme cela :

    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
     
    [Bindable]
    public var classement:ArrayCollection = new ArrayCollection;
    [Bindable]
    public var TmpClassement:Array = new Array;
     
    private function init():void
    {
       classement.source = TmpClassement;
       classement.addEventListener(CollectionEvent.COLLECTION_CHANGE,maFonction);
    }
    public function getClassementOfTournoisResult(evt:ResultEvent):void
    {
       TmpClassement = Array(evt.result);
    }
     
    private function maFonction():void
    {
       Alert.show("toto");
    }
    Avez vous une idée ?

    Cordialement Laurent

  2. #2
    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
    Il y a un malentendu sur la signification de COLLECTION_CHANGE.
    Cet événement est déclenché lorsque le contenu de la collection est modifié (ajout, suppression, modification d'items).

    Dans ton premier exemple, le listener n'a aucune chance d'être exécuté dans la mesure où il est associé à une instance d'objet qui est remplacée par une nouvelle instance. Nouvelle instance qui n'a donc pas de listener.

    Dans ton second exemple, la doc de la propriété source d'un ArrayCollection est claire :
    The source of data in the ArrayCollection. The ArrayCollection object does not represent any changes that you make directly to the source array. Always use the ICollectionView or IList methods to modify the collection.
    Là encore il est normal de ne pas déclencher le listener. Et si même le listener était déclenché il le serait à chaque fois puisque le changement de source serait bien considéré comme un changement de la collection.

    Le moyen le plus simple à mon avis est de récupérer les données dans un ArrayCollection temporaire, de le comparer à la collection actuelle et dans le cas où il y a une différence d'affecter les nouvelles données et déclencher ton listener.

Discussions similaires

  1. AMFPHP et ArrayCollection
    Par Caesarus dans le forum Flex
    Réponses: 5
    Dernier message: 08/01/2010, 16h14
  2. Réponses: 4
    Dernier message: 09/05/2005, 21h01
  3. [VB.NET] Le DataBinding en vb.net, c'est comment?
    Par Pleymo dans le forum ASP.NET
    Réponses: 11
    Dernier message: 04/02/2005, 14h14
  4. [VB.NET][DataBinding] Rafraichissement DataGrid lié à un obj
    Par speedy1496 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 21/10/2004, 10h15
  5. [C#] Problème de DataBinding
    Par bilb0t dans le forum ASP.NET
    Réponses: 4
    Dernier message: 08/10/2004, 11h38

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