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 :

HorizontalList amnésique sévère


Sujet :

Flex

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de supernova
    Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    447
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2005
    Messages : 447
    Par défaut HorizontalList amnésique sévère
    bonjour le forum,

    J'ai un soucis concernant une horizontallist qui est "bindé" sur un arrayCollection. Le soucis c'est quand je supprime dans l'ARrayCollection ma Liste n'affiche plus rien.. J'ai vérifié la logique et mon arrayCollection lui contient les bonnes valeurs..


    Composant MXML HorizontalList :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <mx:HorizontalList
                                    color="#006699"
                                    id="hListPanier"
                                    columnWidth="180"
                                      dataProvider="{collectionPanier}"
                                      selectionDisabledColor="#FFFFFF"
                                     backgroundColor="#FFFFFF"
                                     labelFunction="displayItemPanier"
                                     labelField="libelle"
                                     iconField="iconeIssu"
                                     itemRenderer="view.CustomItemRendererPanier"
                                     width="100%"
                                     height="100" />

    déclaration du ArrayCollection :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
                                    //panier de sélection
                                    [Bindable]
                                    private var collectionPanier : ArrayCollection;

    cette fonction supprime les items cochés dans le panier :
    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
    [Bindable]
    private function supprimeDuPanier():void {
                //supprime les espaces (trim)
                var r:RegExp = /^\s*(.*?)\s*$/g
     
                var tableauReference:ArrayCollection = null;
                tableauReference = new ArrayCollection; //nouveau tableau qui va contenir les éléments  subsistants dans le panier
     
                for (var i:uint = 0 ; i < collectionPanier.length ; i++){
                            var c1:String = String(collectionPanier.getItemAt(i).conceptIssu[0]);
                            var c2:String = c1.replace(r, "$1");
                            var testB:Boolean = false;
     
                            for (var a:uint = 0 ; a < __model.tabObjEnSuppresionPanier.length ; a++) {
                                            var conceptAs:String = __model.tabObjEnSuppresionPanier.getItemAt(a).concept;
                                            var c0:String = conceptAs.replace(r, "$1");
                                            if (c0 == c2){
                                                    testB=true; // si l'élément est trouvé pour suppression
                                                    break;
                                            }
                            }
     
            if (!testB) {
                        tableauReference.addItem(collectionPanier.getItemAt(i));  // on ajout dans le tableau temporaire que les élements qui ne sont pas à supprimer
            }
     
        }
        tableauReference.refresh();
        collectionPanier = tableauReference; // on recopie le panier "nettoyé" dans l'arraycollection bindé
     
        hListPanier.invalidateDisplayList();
        hListPanier.invalidateList();
     
     
        //TEST POUR CONSTATER QUE L'ARRAY COLLECTION CONTIENT LES BONNES VALEURS
        var message:String="Etat du nouveau panier : \n";
     
        for (var x:uint = 0; x < collectionPanier.length; x++) {
                    message = message + "   -> " + collectionPanier.getItemAt(x).conceptIssu[0] + " \n";   
        }
     
        Alert.show(message);
        //FIN DE TEST
     
     
     
    }
    Je constate que le composant HorizontalList n'est pas mis à jour alors que l'ArrayCollection contient bien les bonnes valeurs..

    Merci d'avance pour vos suggestions..

    --

  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
    A première vue je ne vois pas de raison pour que le HorizontalList ne soit pas actualisé !!!!

    Juste une réflexion : pourquoi tu ne supprimes pas directement les items de la collection plutôt que de passer par une collection intermédiaire ?

    et une seconde : le refresh dans une collection ne sert qu'à actualiser la vue en fonction d'un tri ou d'un filtre, ce que tu ne sembles pas utiliser ici.

  3. #3
    Membre chevronné Avatar de supernova
    Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    447
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2005
    Messages : 447
    Par défaut
    merci pour ta réponse Jylaxx,

    j'ai teste aussi avec removeitemAt.. pas mieux.. quant au refresh j'avoue que je fais des tests tout azimut.. sans grand succès..


    J'ai recompilé mon appli du sdk 3.2 vers le 3.5..

    je désespère..

  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
    Je te conseille de faire un test simple avec une collection vide et deux boutons, un pour ajouter un élément et l'autre pour en supprimer, pour voir comment se comporte le HorizontalList.

Discussions similaires

  1. [Flex3] ItemRenderer dans une HorizontalList, passage de paramètres
    Par anfalsh dans le forum Flex
    Réponses: 4
    Dernier message: 05/01/2011, 11h46
  2. Horizontallist, videos, doubleclck
    Par xavpiaf dans le forum Flex
    Réponses: 1
    Dernier message: 27/03/2009, 15h49
  3. Erreur sévère 62 : syntax error in format
    Par Invité dans le forum Fortran
    Réponses: 4
    Dernier message: 04/06/2008, 22h20
  4. Sévère bug d'affichage
    Par orelero dans le forum Composants
    Réponses: 4
    Dernier message: 07/05/2008, 20h06

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