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 :

Filtrage de niveau 2 dans Advanced Data grid [Fait]


Sujet :

Flex

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3
    Par défaut Filtrage de niveau 2 dans Advanced Data grid
    Bonjour,

    Je souhaiterai filtrer mes données qui sont du type


    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
     
     
        <mx:ArrayCollection id="arrColl">
            <mx:source>
                    <mx:Object label="One" value="100" subList="{toto}" />
                    <mx:Object label="two" value="75" subList="{toto2}" />
    		</mx:source>
        </mx:ArrayCollection>
     
                <mx:ArrayCollection id="toto">
                    <mx:Object label="Three" value="80" />
                    <mx:Object label="Four" value="200" />
                </mx:ArrayCollection>
                <mx:ArrayCollection id="toto2">
                    <mx:Object label="Three11233" value="980" />
                    <mx:Object label="Fouré525" value="140" />
                </mx:ArrayCollection>
    J'ai donc repris un tuto qui permet de filtrer grace à un slider.

    Mon composant graphique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
            <mx:AdvancedDataGrid id="dataGrid"
                    verticalScrollPolicy="on">
                    <mx:dataProvider>
                    	<mx:HierarchicalData>
                    		<mx:childrenField>subList</mx:childrenField>
    						<mx:source>{arrColl}</mx:source>
                    	</mx:HierarchicalData>
                    </mx:dataProvider>
    	    	<mx:groupedColumns>
    			<mx:AdvancedDataGridColumn id="labelID" dataField="label"/>
    			<mx:AdvancedDataGridColumn id="value" dataField="value" />
    	    	</mx:groupedColumns>
            </mx:AdvancedDataGrid>
    Ma fonction d'init sur le creationComplete de l'appliflex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
                private function init():void {
                    if (checkBox.selected) {
                    	for each (var item : Object in arrColl)
                    	{
    	                    item.subList.filterFunction = sliderFilterFunc;
        	                item.subList.refresh();
        	            }
                    }
                }
    Mon handler sur le change event :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
                private function slider_change(evt:SliderEvent):void {
                    	for each (var item : Object in arrColl)
                    	{
        	                item.subList.refresh();
        	            }
                }
    la fonction de filtrage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
                private function sliderFilterFunc(item:Object):Boolean {
                    var minSlider:uint = slider.values[0];
                    var maxSlider:uint = slider.values[1];
                    if ((item.value >= minSlider) &&
                                (item.value <= maxSlider)) {
                        return true;
                    } else {
                        return false;
                    }
                }
    En gros, ça m'affiche soit tous les éléments de niveau 2 de l'arbre soit aucun....

    ce que je voudrais c'est que ça ne m'affiche les éléments de niveau 2 correspondant au filtre.
    (j'ai attaché mon mxml...pour l'exemple)
    Fichiers attachés Fichiers attachés

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
                private function slider_change(evt:SliderEvent):void {
                    	for each (var item : Object in arrColl)
                    	{
        	                item.subList.refresh();
        	            }
                }
    Je viens de vérifier que quand je sors de là, les subList sont bien mises à jour...
    mais au niveau de l'affichage, c'est niet.

    Et au prochain tour, la subList est remise avec les valeurs de son ArrayCollection.source

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3
    Par défaut
    J'ai trouvé

    un pti tour ici : http://techrays.wordpress.com/2007/1...anceddatagrid/

    donc en gros, il faut donner la fonction de filtre directement au Hierarchical Data et non pas au Array Collection.

    Puis refresh qd c'est nécessaire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    // assign filter function to
    //the AdvancedDataGrid's dataProvider
    IHierarchicalCollectionView(
            adg.dataProvider).filterFunction =
                                     myFilterFunc;
     
    // refresh the ADG's dataProvider
    IHierarchicalCollectionView(
            adg.dataProvider).refresh();

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

Discussions similaires

  1. check box dans un data grid view
    Par CssFaxien dans le forum C#
    Réponses: 2
    Dernier message: 26/04/2011, 11h22
  2. Flex Advanced Data Grid
    Par npirard dans le forum Flex
    Réponses: 3
    Dernier message: 09/04/2010, 09h46
  3. Afficher donnees dans data grid view
    Par B.M.W83 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 30/01/2010, 12h52
  4. Advanced Data Grid + drag Enter
    Par anis50 dans le forum MXML
    Réponses: 0
    Dernier message: 21/11/2009, 14h41
  5. naviguer dans data grid
    Par krouz6 dans le forum Windows Forms
    Réponses: 10
    Dernier message: 26/04/2007, 14h01

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