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

Windows Presentation Foundation Discussion :

Datagrid récupération information d'une cellule [Débutant]


Sujet :

Windows Presentation Foundation

  1. #1
    Membre régulier
    Profil pro
    Développeur
    Inscrit en
    Mai 2002
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mai 2002
    Messages : 85
    Points : 105
    Points
    105
    Par défaut Datagrid récupération information d'une cellule
    Bonjour
    Je bataille sans succès depuis des heures. Voici mon problème. J'ai une datagrid que j'alimente à partir d'une base de données de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    BDDEntity Donnees = new BDDEntity();
    var Requete = from TA in Donnees.TypeArticle orderby TA.Nom select new { ID = TA.ID, Nom = TA.Nom};
    Madatagrid.ItemsSource = Requete.ToList();
    Je souhaiterais récupérer l'info contenue dans une cellule de cette datagrid, via CurrentItem. Mais je ne sais pas comment faire. En mode debug, je vois que CurrentItem contient {ID =x, Nom="y"}, mais comment y accéder ?
    Désolé si ma question est neuhneuh, mais j'en suis au début de ma courbe d'apprentissage en C#/WPF.
    Merci pour vos réponses.

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2009
    Messages
    2 004
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2009
    Messages : 2 004
    Points : 5 423
    Points
    5 423
    Par défaut
    Le select anonyme est bien si tu restes dans le même scope, car grâce au compilateur tu auras toujours accès aux propriétés que tu définis dans ton select.
    En dehors de ce scope tu perds la définition de ton objet et donc tu ne peux pas caster ton currentItem en quelque chose que tu connais. Tu peux voir en faisant un GetType sur ton currentItem qu'il s'agit d'un type du style "<>f__AnonymousType0".

    Le plus simple et le plus maintenable serait de soit garder tes items en tant que TypeArticles, soit de te créer une autre classe.

  3. #3
    Membre régulier
    Profil pro
    Développeur
    Inscrit en
    Mai 2002
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mai 2002
    Messages : 85
    Points : 105
    Points
    105
    Par défaut
    Merci pour ta réponse.
    J'ai modifié la requête en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var Requete = from TA in Donnees.TypeArticle orderby TA.Nom select TA;
    Du coup CurrentItem est du type TypeArticle et je peux accéder aux infos.

    Si je veux m'orienter vers ta deuxième proposition, comment je dois m'y prendre ?

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2009
    Messages
    2 004
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2009
    Messages : 2 004
    Points : 5 423
    Points
    5 423
    Par défaut
    Citation Envoyé par zworg Voir le message
    Si je veux m'orienter vers ta deuxième proposition, comment je dois m'y prendre ?
    Très facilement en précisant dans le new que tu souhaites tel objet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var Requete = from TA in Donnees.TypeArticle orderby TA.Nom select new TonObjet(){ { ID = TA.ID, Nom = TA.Nom .....}
    Il s'agit donc de la meme chose que ta premiere requete sauf que tu precise que tu veux creer une collection de TonObjet au lieu d'un type anonyme.

  5. #5
    Membre régulier
    Profil pro
    Développeur
    Inscrit en
    Mai 2002
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mai 2002
    Messages : 85
    Points : 105
    Points
    105
    Par défaut
    Un grand merci.
    J'ai cherché depuis hier la syntaxe de cette deuxième solution, pressentant que c'était ce qu'il fallait faire, mais sans savoir comment le mettre en œuvre. Ouf, tu m'enlèves une belle épine.

  6. #6
    Expert confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2009
    Messages
    2 004
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2009
    Messages : 2 004
    Points : 5 423
    Points
    5 423
    Par défaut
    Citation Envoyé par zworg Voir le message
    J'ai cherché depuis hier la syntaxe de cette deuxième solution
    Tu noteras également l'existence d'une autre syntaxe plus 'classique' à base de lamda, appelé parfois 'fluent', celle que j'utilise le plus souvent.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var Requete = Donnees.TypeArticle.OrderBy( TA=> TA.Nom).Select(TA=> new TonObjet() { ID = TA.ID, Nom = TA.Nom .....})

  7. #7
    Membre régulier
    Profil pro
    Développeur
    Inscrit en
    Mai 2002
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mai 2002
    Messages : 85
    Points : 105
    Points
    105
    Par défaut
    Un merci de plus pour cette info. J'ai bien pris note.

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

Discussions similaires

  1. [LibreOffice][Tableur] Mettre informations dans une cellule depuis InputBox
    Par phildu80 dans le forum OpenOffice & LibreOffice
    Réponses: 7
    Dernier message: 28/06/2014, 12h01
  2. Obtenir information d'une cellule d'un autre tableau
    Par arno80 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 24/06/2014, 16h56
  3. Réponses: 1
    Dernier message: 09/05/2014, 20h25
  4. Récupération valeur d'une cellule Excel à l'aide de TALEND
    Par macsigarev dans le forum Développement de jobs
    Réponses: 11
    Dernier message: 25/04/2012, 12h20
  5. Récupération donnée dans une cellule
    Par macarons dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 26/08/2011, 15h26

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