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

C# Discussion :

Récupérer un objet


Sujet :

C#

Vue hybride

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

    Informations forums :
    Inscription : Novembre 2010
    Messages : 71
    Par défaut Récupérer un objet
    Bonjour à tous ! Je vous explique mon petit problème :

    J'ai un dataGrid qui est une liste d'objet que j'ai remplis de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    foreach (clients unClient in mesClients)
                {
                    client_data_grid.Rows.Add(unClient.ClientNum, unClient.ClientNom, unClient.ClientPrenom);
                }
    Ce que je voudrais c'est que lorsque je clique sur une ligne, récupérer l'objet entièrement, il y a t-il un moyen ?
    Merci de votre lecture et merci d'avance de votre réponse

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    C'est possible, mais pas en faisant comme tu fais... N'ajoute pas les lignes manuellement au DataGridView, utilise le data binding

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    client_data_grid.DataSource = mesClients;
    Dans le designer, définit une colonne pour chaque propriété de tes objets, en mettant le nom de la propriété à afficher dans le DataPropertyName de la colonne

    Ensuite, tu peux récupérer l'objet client sélectionné via la propriété DataBoundItem de la ligne sélectionnée

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 71
    Par défaut
    Merci de m'avoir répondu !
    J'ai réussi à donner le datasource ça marche niquel !
    Par contre je n'arrive pas à récupérer l'objet, quand je fais cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    clients test = client_data_grid.CurrentRow.DataBoundItem;
    Il me dit :
    Erreur 2 Impossible de convertir implicitement le type 'object' en 'PTI_5.clients'. Une conversion explicite existe (un cast est-il manquant*?)
    Comme ci il avait compris que c'était un objet mais sans plus

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par Adel13 Voir le message
    Par contre je n'arrive pas à récupérer l'objet, quand je fais cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    clients test = client_data_grid.CurrentRow.DataBoundItem;
    Il me dit : Erreur 2 Impossible de convertir implicitement le type 'object' en 'PTI_5.clients'. Une conversion explicite existe (un cast est-il manquant*?)

    Comme ci il avait compris que c'était un objet mais sans plus
    Précisément... DataBoundItem est déclaré comme étant de type Object, parce que le DataGridView peut contenir n'importe quoi

    Le message d'erreur t'indique d'ailleurs ce qu'il faut faire : il suffit d'ajouter un cast

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    clients test = (clients)client_data_grid.CurrentRow.DataBoundItem;

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 71
    Par défaut
    Merci je ne comprenais pas à quoi servait le cast d'ailleur je ne le vois pas ici non plus : Tu pourrais me dire ce que tu viens de faire ?
    Le fait de mettre entre parenthèse la classe fais en sorte que la suite sera converti ?

    En tout cas merci !

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par Adel13 Voir le message
    Merci je ne comprenais pas à quoi servait le cast d'ailleur je ne le vois pas ici non plus : Tu pourrais me dire ce que tu viens de faire ?
    DataBoundItem est déclaré comme étant de type Object, autrement dit ça peut être n'importe quoi (vu que tous les types héritent de Object, directement ou indirectement). Tu veux l'affecter à une variable de type clients, mais un Object n'est pas forcément un clients. Mais comme tu sais que DataBoundItem est supposé contenir un objet de type clients, tu fais la conversion pour indiquer au compilateur que tu n'est pas en train d'affecter n'importe quoi à ta variable...

    Si finalement l'objet n'est pas de type clients, ça lèvera une InvalidCastException

    La syntaxe générale pour un cast vers le type T est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    T variable = (T)expression;

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

Discussions similaires

  1. [JTree] Récupérer l'objet sélectionné
    Par daedric dans le forum Composants
    Réponses: 2
    Dernier message: 01/10/2005, 19h19
  2. [JComboBox] Récupérer l'objet sélectionné
    Par Terminator dans le forum Composants
    Réponses: 3
    Dernier message: 14/09/2005, 12h29
  3. Récupérer un objet d'une liste déroulante
    Par Hell dans le forum C++Builder
    Réponses: 2
    Dernier message: 07/01/2005, 14h59
  4. [servlet][bean]comment récupérer l'objet request
    Par otminou dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 27/09/2004, 14h40
  5. Réponses: 4
    Dernier message: 15/09/2004, 16h52

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