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 :

Selection d'une ligne d'un datagrid.


Sujet :

Flex

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 227
    Par défaut Selection d'une ligne d'un datagrid.
    Bonjour,

    J'ai un datagrid (déclaré "dg") qui est approvisionné par un dataprovider (déclaré "dp").
    Je souhaiterai effectuer ce test pour continuer mon application:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Si je clique sur une ligne de mon datagrid alors
    	Hello s'affiche

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (dg.dp.selectedItems !== null){
    		Alert.show("hello");
    }
    J'ai testé plusieurs choses mais ca n'a pas l'air de fonctionner

    Merci par avance

  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 suffit de définir une fonction et l'associer à l'événement click de ta DataGrid.

    et la syntaxe sera plutôt "dg.selectedItem" (de mémoire)

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 227
    Par défaut
    J'ai également testé dg.selectedItem mais sans réussite. Cela reste normal étant donné qu'il faut associer l'évenement click à une fonction.

    Je sais très bien le faire en mxml or tout mes composants graphiques sont en AS3. Savez vous comment le faire sans passer par du mxml ? (définir l'évenement click en AS3)

    Merci

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Mai 2006
    Messages
    895
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 895
    Par défaut
    Ce que jylaxx voulait te dire c'est de faire un addEventListener sur l'évènement click ce qui donnerai quelque chose du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    dg.addEventListener( <a href="http://livedocs.adobe.com/flex/3/langref/flash/events/MouseEvent.html#CLICK" target="_blank">flash.events.MouseEvent.CLICK</a>, maFonction);
    Je n'ai pas testé c'est juste un exemple de tête.

    [EDIT] pour la fonction 'maFonction' tu peux l'écrire comme tu le fais en MXML [/EDIT]

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 227
    Par défaut
    Oki merci

    J'ai testé ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dg.addEventListener(MouseEvent.CLICK,test());
    avec la fonction test():

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    private function test():void{
     
    	if (dg.selectedItem !== null){
     
    Alert.show("hello");
     
    }
    }

    J'obtiens cette erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1067: Implicit coercion of a value of type void to an unrelated type Function.

    Il y a donc un problème avec ma fonction test() et le "void" mais je ne comprend pas pourquoi ...

    Edit: l'erreur pointe sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dg.addEventListener(MouseEvent.CLICK,test());

  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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dg.addEventListener(MouseEvent.CLICK,test);
    pas de parenthèses +++

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 227
    Par défaut
    Merci

    Il n'y a plus d'erreur mais par contre le "hello" ne s'affiche pas. Je vais essayer de comprendre pourquoi.
    Bonne aprem

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 227
    Par défaut
    Aie je me retrouve en difficulté pour récupérer certaine données de mon datagrid.

    Chaque ligne de mon datagrid provenant de un xml, j'aimerai qu'au clique sur la 1ere ligne je récupère dans un textInput le nom de la personne A provenant du 1er xml. Par ailleurs lorsque je clique sur la 2e ligne je voudrais récupérer le nom de la personne B provenant du 2e xml (le nom A sera effacé) etc etc...

    Ma question est simple quel est la méthode la mieux adapté pour effectuer ce genre de traitement ?

    Merci

  9. #9
    Membre Expert
    Avatar de Jim_Nastiq
    Homme Profil pro
    Architecte, Expert Flex
    Inscrit en
    Avril 2006
    Messages
    2 335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte, Expert Flex
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 335
    Par défaut
    salut,

    il ne s'affiche pas probablement car ut as une erreur de syntaxe(un '=' en trop) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (dg.selectedItem !== null){

    Pensez vraiment à effectuer une recherche avant de poster, ici et sur un moteur de recherche! c'est la moindre des choses
    Pensez au tag

    Mon Blog sur la techno Flex
    Ma page sur Developpez.com

    Jim_Nastiq

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 227
    Par défaut
    Euh oui j'ai corrigé cette erreur mais le Hello ne s'affiche toujours pas.
    C'est vraiment bizarre dans la mesure ou je n'utilise que:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dg.addEventListener(MouseEvent.CLICK,test);
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    private function test():void{
     
    	if (dg.selectedItem != null){
     
    Alert.show("hello");
     
    }
    }
    Et il n'y a aucune erreur. Lorsque je clique sur une ligne de mon datagrid rien ne se passe...

  11. #11
    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
    J'avais remarqué cette utilisation de l'inégalité stricte. Dans le cas d'une comparaison avec null, != ou !== donnent à mon avis le même résultat.

  12. #12
    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
    Est-ce que tu as fait du pas à pas pour savoir si la fonction était appelée ?

  13. #13
    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 pense qu'il faut aussi ajouter un event dans les paramètres de ta fonctio.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    private function test( event : MouseEvent ):void{
     
    	if (dg.selectedItem != null){
    Alert.show("hello");
     
    }
    }

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 227
    Par défaut
    Bonjour tout le monde

    Merci ca marche à présent, lorsque je clique sur une ligne de mon datagrid j'ai bien le "hello" qui apparait.

    J'aurais aimé avoir quelques conseils concernant le traitement que je souhaite effectuer. Les données présentes dans mon datagrid proviennent d'une base de donnée. Chaque ligne de mon datagrid correspond à un xml. Or j'aimerai que lorsque je clique sur la ligne dont le nom de la personne est X que ca m'affiche le xml de la personne X uniquement. Y a t il une méthode plus adapté qu'une autre pour faire ce traitement ?
    A l'heure actuelle lorsque je clique sur une ligne quelconque j'arrive à afficher tout les xml des personnes contenues dans mon datagrid (actuellement il y a 3 personnes dans mon datagrid donc 3 xml s'affichent)

    Voici un aperçu de mon xml:

    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
     
    <personne> 
    	<nom> X </nom>
    	<age> 20 </age>
    </personne> 	
     
    <personne> 
    	<nom> Y </nom>
    	<age> 35 </age>
    </personne> 
     
    <personne> 
    	<nom> Z </nom>
    	<age> 60 </age>
    </personne>
    Merci

  15. #15
    Membre Expert

    Profil pro
    Inscrit en
    Mai 2006
    Messages
    895
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 895
    Par défaut
    Je n'ai pas tout compris à ce que tu as raconté. Tu devrais avoir l'information qui va bien dans le selectedItem en principe.

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 227
    Par défaut
    Oui j'ai compris mon erreur, le problème est réglé. Contrairement à d'autres langages que j'ai plus l'habitude d'utiliser je suis surprise de voir ce que l'on peut faire avec ce flex. Quelques lignes suffisent là ou quelques fonctions auraient été nécessaire dans un autre langage...

    Sujet clos merci à tous et à toutes

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 19/02/2011, 10h37
  2. désactiver la selection d'une ligne d'une Datagrid
    Par yayasam dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 17/05/2010, 23h08
  3. Réponses: 4
    Dernier message: 21/07/2006, 10h14
  4. [C#][Débutan] Couleur background d'une ligne d'un DataGrid
    Par Roach dans le forum Windows Forms
    Réponses: 1
    Dernier message: 09/09/2005, 09h03
  5. Réponses: 3
    Dernier message: 29/08/2005, 16h44

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