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 :

Filtrer datagrid avec text à partir de MySQL


Sujet :

Flex

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 107
    Par défaut Filtrer datagrid avec text à partir de MySQL
    Bonjour,
    mon titre est peu clair mais je vais essayer de détailler.

    Je souhaiterais faire un filtrer mon datagrid à partir d'un champs texte (des que l'on écrit une lettre par exemple "a" le datagrid affiche tous les textes contenant la lettre "a")

    J'ai cru comprendre qu'il faut un dataprovider avec des données de type ArrayCollection.

    Le problème c'est que dans mon cas je récupère un type ARRAY de ma de donnée MySQL via PHP et AMFPHP et non un type arraycollection.

    A noter que j'arrive à afficher mes données de ma base de donnée dans un datagrid avec un type array pour le dataprovider du datagrid. Car je récupère un type array lorsque j'appelle le service via PHP

    Mais je n'arrive pas à filtrer les données contenues du datagrid. Je suis un peu perdu...

    merci d'avance

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 65
    Par défaut
    J'uilise le code ci-dessous pour convertir un résultat php en données pouvant être triées dans un datagrid,
    Je pense que tu peux faire la même chose avec ton array :

    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
    private var xmlFiltre:ArrayCollection = new ArrayCollection();
     
    private function onResult( e:Event ):void
    {
     
    	grid.invalidateDisplayList();
    	xmlFiltre.filterFunction = null;
     
    	xmlFiltre.removeAll();
     
    	for each(var xml:XML in HTTP.lastResult.player )
    	{
    		xmlFiltre.addItem( 
    		{ num      : int( xml.rank ),
      		  nom      : String( xml.name ),
    		  sid      : String( xml.sid )
    	    } )
    	}
    	xmlFiltre.filterFunction = filterFunc;
     
    	grid.selectedIndex = 0;
    	grid.validateDisplayList();
    }
    et pour trier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    // Fonction de tri
     private function filterFunc(item:Object):Boolean 
    {
      var ok : Boolean = true;		
       if ( filtreNom.text != "" )	ok = patNom.test( item.nom );
      return ok;
    }

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 107
    Par défaut
    ok pour la réponse mais je ne suis pas expert et je galère un peu


    ok pour la déclaration
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    private var xmlFiltre:ArrayCollection = new ArrayCollection();
    que j'ai déclaré en public qui me servira à fournir le 'dataProvider' de mon Datagrid

    ok aussi pour la variable
    'grid'
    qui est l'identifiant du datagrid

    ok =>
    filtreNom.text
    c'est la variable où j'ai mon champs texte de recherche

    par contre, j'ai encore 2 erreurs:
    - a quoi correspond:
    patNom
    ?
    -
    acces à la propriété non définie HTTP
    avec merci d'avance

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 65
    Par défaut
    patNom c'est un pattern utilisé dans la function filtre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private	var patNom : RegExp = new RegExp;
    HTTP c'est ma source de données qui est un HTTPService, pour toi c'est peut être différent.
    ( réponse sous forme XML)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	<mx:HTTPService id="HTTP" url="../php/fx/players.php?action=list" result="onResult(event)" useProxy="false" method="POST" resultFormat="e4x">
    	</mx:HTTPService>

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 107
    Par défaut
    ok merci à nouveau pour cette nouvelle réponse,

    j'ai commencé à revoir les RegExp, j'avais vu ça, il y un temps en php...

    je vois que tu utilises le composant httpservice pour accéder à la couche métier php.

    Dans mon cas, j'utilise le composant "RemoteObject" et je ne vois pas encore comment corréler ces 2 méthodes...

    Le code que j'utilise est celui-ci (tu peux voir que je récupère un type Array et j'aimerais trier mon datagrid avec la variable "MaCollectionObjet ":

    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
     
     
    public function MaFonctionTest():void
    		{
     
    			var serv0:RemoteObject = new RemoteObject();
     
     
    			serv0.endpoint = "http://localhost/amfphp/gateway.php";
     
    			serv0.showBusyCursor = true ;
     
    			serv0.destination = "amfphp";
     
    			serv0.source = "MaClassTest";			
     
     
    			serv0.lister.addEventListener("result", resultatOK);
     
    			serv0.lister.addEventListener("fault", resultatKO);
     
    			serv0.lister();
    		}
     
    //....
     
    public function resultatOK(e:ResultEvent):void
    		{			
    			MaCollectionObjet = e.result as Array;
     
     
    		}
     
    //....
     
     
    <mx:DataGrid id="id_datagrid" dataProvider="{MaCollectionObjet}" x="10" y="36" width="902" height="350">
    <mx:columns>
     
    						<mx:DataGridColumn headerText="Titre" dataField="titre"/>
    						<mx:DataGridColumn headerText="Genre" dataField="genre"/>
    						<mx:DataGridColumn headerText="Année" dataField="annee"/>
     
    					</mx:columns>
    				</mx:DataGrid>


    en attendant une nouvelle aide, je vais continuer à étudier les éléments que tu as utilisé...


  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 65
    Par défaut
    C'est finalement presque pareil tu récupère le résultat dans resultatOK(e:ResultEvent)

    Tu n'as plus qu'a faire une boucle plutôt que d'utiliser MaCollectionObjet = e.result as Array;

    Je suppose que tu récupère la liste des valeur XML dans e.result ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for each(var xml:XML in e.result."le nom de tes données" )
    {
         xmlFiltre.addItem( ...

Discussions similaires

  1. Remplir un datagrid avec wpf à partir d'un fichier texte
    Par solim dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 06/05/2011, 10h33
  2. [MySQL] Un TreeView avec PHP à partir d'une base mySQL
    Par TSniper dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 07/09/2010, 10h36
  3. Réponses: 0
    Dernier message: 21/07/2010, 06h37
  4. récupération du texte à partir d'un dataGrid
    Par j_esti dans le forum Flex
    Réponses: 3
    Dernier message: 05/11/2009, 17h26
  5. Réponses: 2
    Dernier message: 27/05/2007, 02h38

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