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 :

filterFunction ne met pas à jour le tableau, juste la collection ?


Sujet :

Flex

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de clavier12AZQSWX
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    1 477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 477
    Par défaut filterFunction ne met pas à jour le tableau, juste la collection ?
    bonjour,

    j'aimerai avoir des détails sur l'utilisation de filterFunction.

    voilà mon problème :

    -j'ai un tableau1 de type Array
    -j'ai un deuxième tabeau2 de type array
    - j'ai une collection1 array basée sur tableau1
    -j'applique un filtre avec filterFunction sur collection1

    jusque là tout marche

    je fais ensuite : tableau2=tableau1
    là je pensais que dans tableau2 j'allais avoir les données filtrés ....mais non !!!!!!!!!!! le filtre n'est que visuel apparement !
    En tout cas en appliquant un filtre à une collection, le filtre se s'applique pas au tableau initial, juste à la vue collection !

    est-ce normal ou un bug ?

    je pensais qu'en filtrant la collection1, ça filtrerait aussi (donc enlever des lignes) le tableau1 . mais non !

    qu'est-ce que j'ai mal compris ?


    Voilà ce que j'ai compris :
    c'est une fonction perso qui permet d'appliquer un filtre à une collection.
    D'après la doc, la différence entre une collectionArray et un Array est que lorsqu'on

  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
    tableau2=tableau1
    J'espère que tu sais que cette assignation est faite par référence. Donc tableau2 fait maintenant référence au même objet que tableau1.

    le filtre n'est que visuel apparement !
    Il est clairement dit dans la doc que l'application de filtres sur une collection ne modifiait pas les donnés sous-jacentes. Et heureusement car sinon on ne pourrait pas appliquer successivement différents filtres sur les mêmes données.

    est-ce normal ou un bug ?


    Pour obtenir ce que tu veux il faut utiliser les méthodes de l'objet Array (cf. filter, map, etc.)


    Le message n'est pas terminé

  3. #3
    Membre éprouvé
    Avatar de clavier12AZQSWX
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    1 477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 477
    Par défaut
    bonjour Jylaxx (encore toi :-) )

    ayé je viens de comprendre.

    en fait après l'application d'un filterFunction sur une collection, je dois faire :

    tableau1=collection1.ToArray();

    pour resynchronier les deux !

    et oui (là j'ai très honte), en effet il y a aussi une fonction de filtre (.filter) sur un Array....

    j'ai juste découvert la foncton filterFunction dans un tutoriel basé sur les datagrid et comme pour remplir un datagris on passe par un Arraycollection... je n'ai pas pu découvrir que Filter existait pour Array

    tableau2=tableau1
    J'espère que tu sais que cette assignation est faite par référence. Donc tableau2 fait maintenant référence au même objet que tableau1.
    certains ?
    j'ai pas trouvé où c'est écrit dans la doc...

  4. #4
    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
    certains ?
    j'ai pas trouvé où c'est écrit dans la doc...
    = assignment Operator

    Usage expression1 = expression2

    Assigns the value of expression2 (the operand on the right) to the variable, array element, or property in expression1. Assignment can be either by value or by reference. Assignment by value copies the actual value of expression2 and stores it in expression1. Assignment by value is used when expression2 is a primitive value, which means that its data type is either Boolean, Number, int, uint, or String. Assignment by reference stores a reference to expression2 in expression1. Assignment by reference is commonly used with the new operator. The new operator creates an object in memory, and a reference to that location in memory is assigned to a variable.

    Note: In ActionScript 3.0 all values (including primitive values) are objects, and all assignment is done by reference, but primitive objects have special operators that allow them to behave as if they are assigned by value.


    j'ai juste découvert la foncton filterFunction dans un tutoriel basé sur les datagrid
    C'est le problème des tutoriels... On ne prend même plus la peine de lire les documentations de référence

  5. #5
    Membre éprouvé
    Avatar de clavier12AZQSWX
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    1 477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 477
    Par défaut
    tableau2=tableau1
    J'espère que tu sais que cette assignation est faite par référence. Donc tableau2 fait maintenant référence au même objet que tableau1.

    diantres ! jylaxx tu as parfaitement raison !

    1000 excuses pour ne pas t'avoir cru au mot !
    tellement ça me parait invraissemblabe !
    dans ce cas comment copier le contenu d'un tableau sans faire une boucle et copier item par item ?

    j'ai essayé New, ça marche pas

    j'ai trouvé une astuce avec tableau2=tableau1.concat();
    mais ça me parraît louche même si ça marche...

    étrange comportement que Flex/AS3 nous fait là !
    à en refroidir plus d'un développeur Python et PHP non averti !

  6. #6
    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
    Attention lis bien ceci :
    The Array class has no built-in method for making copies of arrays. You can create a shallow copy of an array by calling either the concat() or slice() methods with no arguments. In a shallow copy, if the original array has elements that are objects, only the references to the objects are copied rather than the objects themselves. The copy points to the same objects as the original does. Any changes made to the objects are reflected in both arrays.

    In a deep copy, any objects found in the original array are also copied so that the new array does not point to the same objects as does the original array. Deep copying requires more than one line of code, which usually calls for the creation of a function. Such a function could be created as a global utility function or as a method of an Array subclass.
    Pour avoir la suite cherche "Cloning arrays" dans la doc de Flex...

    étrange comportement que Flex/AS3 nous fait là !
    à en refroidir plus d'un développeur Python et PHP non averti !
    LOL !! C'est pas Python ou PHP qui sont la norme !
    C, C++, Java, Pascal, etc.. ont le même comportement logique que AS3.

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

Discussions similaires

  1. Tableau javascript qui ne se met pas à jour
    Par gyllom dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 28/11/2012, 11h16
  2. Combobox.text qui ne se met pas à jour
    Par davels dans le forum Delphi
    Réponses: 6
    Dernier message: 21/08/2006, 10h29
  3. [AJAX] XMLHTTPREQUEST ne se met pas à jour :-/
    Par franckarts dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 04/08/2006, 18h11
  4. Update Récalcitrante !! Ne met pas à jour !
    Par samlepiratepaddy dans le forum Access
    Réponses: 14
    Dernier message: 28/10/2005, 09h31
  5. un update qui ne met pas à jour
    Par dor_boucle dans le forum Requêtes
    Réponses: 3
    Dernier message: 14/10/2005, 09h31

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