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 :

Recuperer la valeur d'une cellule dans un DataGrid (.net 4.0)


Sujet :

Windows Presentation Foundation

  1. #1
    Membre habitué Avatar de adivinenza
    Inscrit en
    Juin 2008
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 91
    Points : 141
    Points
    141
    Par défaut Recuperer la valeur d'une cellule dans un DataGrid (.net 4.0)
    Bonjour a tous,
    je suis sur un projet wpf et j'utilise un datagrid (celui du framework 4.0) que j'ai lié a une base de donnée avec succès. Maintenant j'aimerais que quand l'utilisateur selectionne une ligne du dataGrid il puisse voir apparaitre dans un TextBlock la valeur de la 2e colonne uniquement.

    J'ai essayé
    Mais ca m'affiche le contenu de toute la ligne.

    J'espere avoir suffisament precis , merci d'avance

  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 : 42
    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
    Points : 39 749
    Points
    39 749
    Par défaut
    Normalement en WPF on n'accède pas directement à une cellule du DataGrid (je suis même pas sûr que ce soit possible), on passe par l'objet bindé. De quel type est l'ItemsSource de ton DataGrid ? Si c'est une List<T>, SelectedItem sera un objet de type T. Si c'est une DataTable, SelectedItem sera un DataRowView (ou DataRow, à vérifier)

    Il faut donc que tu fasses un cast de SelectedItem vers le type approprié, et que tu accèdes à la propriété ou colonne qui t'intéresse

  3. #3
    Membre habitué Avatar de adivinenza
    Inscrit en
    Juin 2008
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 91
    Points : 141
    Points
    141
    Par défaut
    Voici comment j'ai rempli mon DataGrid

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    string strConnection = @"Data Source=|DataDirectory|\NGODatabase.sdf";
     
                NGODatabase dc = new NGODatabase(strConnection);
     
                var organisation =
                    from o in dc.Ngo
                    select new { o.Nom, o.Description, o.Pays, o.Ville };
    Comment on fait le cast dont tu a parlé ?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par adivinenza Voir le message

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    string strConnection = @"Data Source=|DataDirectory|\NGODatabase.sdf";
     
                NGODatabase dc = new NGODatabase(strConnection);
     
                var organisation =
                    from o in dc.Ngo
                    select new { o.Nom, o.Description, o.Pays, o.Ville };
    Comment on fait le cast dont tu a parlé ?
    Tu ne peux pas le cast parce que tu utilises un type anonyme avec l'instruction :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select new { o.Nom, o.Description, o.Pays, o.Ville };
    Pour pouvoir faire ce que tomlev tu dois utiliser un type en définissant une classe avec les propriétés que tu as fournis dans la requête.

  5. #5
    Membre habitué Avatar de adivinenza
    Inscrit en
    Juin 2008
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 91
    Points : 141
    Points
    141
    Par défaut
    Donc en clair je ne peux que recuperer la ligne en entier, pas de possibilité comme ca d'avoir juste une colonne?

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par adivinenza Voir le message
    Donc en clair je ne peux que recuperer la ligne en entier, pas de possibilité comme ca d'avoir juste une colonne?
    Eh oui tant que tu fais usage des types anonymes.

  7. #7
    Membre habitué Avatar de adivinenza
    Inscrit en
    Juin 2008
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 91
    Points : 141
    Points
    141
    Par défaut
    A vrai dire je suis un debutant, vous pourriez m'indiquer alors l'autre demarche a suivre (avec des types non-anonyme)

  8. #8
    Invité
    Invité(e)
    Par défaut
    Tu définis ta classe comme ça :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public class Organisation
    {
         public string Nom {get; set;}
         public string Description {get; set;}
         public string Pays {get; set;}
         public string Ville {get; set;}
    }

    tu modifies ta requête Linq :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    string strConnection = @"Data Source=|DataDirectory|\NGODatabase.sdf";
     
                NGODatabase dc = new NGODatabase(strConnection);
     
                var organisation =
                    from o in dc.Ngo
                    select new Organisation { Nom = o.Nom, Description = o.Description, Pays = o.Pays, Ville = o.Ville }

    Et là quand tu récupères la ligne de ta DataGrid tu castes en Organisation.

  9. #9
    Membre habitué Avatar de adivinenza
    Inscrit en
    Juin 2008
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 91
    Points : 141
    Points
    141
    Par défaut
    Euhh, comment je fais le cast dont tu parle ?

  10. #10
    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 : 42
    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
    Points : 39 749
    Points
    39 749
    Par défaut
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    Organisation org = (Organisation)grid.SelectedItem;

  11. #11
    Invité
    Invité(e)
    Par défaut
    Si la proprieté SelectionMode est à Single alors tu peux faire ce que tomlev a fait ci-dessus.

    Si la proprieté SelectionMode est Extended alors tu fais comme ça :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    List<Organisation> organisations = new List<Organisation>(grid.SelectedItems);

  12. #12
    Membre habitué Avatar de adivinenza
    Inscrit en
    Juin 2008
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 91
    Points : 141
    Points
    141
    Par défaut
    J'ai essayé la methode de Tomlev et J'obtient une erreur :

    Unable to cast object of type 'System.String' to type 'Organisation'

  13. #13
    Invité
    Invité(e)
    Par défaut
    Est ce qu'on peut voir comment comment tu assignes la liste des organisations à ta DataGrid ?

  14. #14
    Membre habitué Avatar de adivinenza
    Inscrit en
    Juin 2008
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 91
    Points : 141
    Points
    141
    Par défaut
    Bien sur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    string strConnection = @"Data Source=|DataDirectory|\NGODatabase.sdf";
     
                NGODatabase dc = new NGODatabase(strConnection);
     
                var organisation =
                    from o in dc.Ngo
                    select new  Organisation{ Nom = o.Nom, Description = o.Description, Pays =  o.Pays, Ville = o.Ville };
     
    this.NGOGrid.ItemsSource = organisation;

  15. #15
    Invité
    Invité(e)
    Par défaut
    Y a-t-il quelque part où tu mets une instruction du genre :
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    grid.ItemSource = organisation;
    en sachant que organisation provient de
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    string strConnection = @"Data Source=|DataDirectory|\NGODatabase.sdf";
     
                NGODatabase dc = new NGODatabase(strConnection);
     
                var organisation =
                    from o in dc.Ngo
                    select new  Organisation{ Nom = o.Nom, Description = o.Description, Pays =  o.Pays, Ville = o.Ville };

  16. #16
    Membre habitué Avatar de adivinenza
    Inscrit en
    Juin 2008
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 91
    Points : 141
    Points
    141
    Par défaut
    C'est ecrit dans mon post precedent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    this.NGOGrid.ItemsSource = organisation;

  17. #17
    Invité
    Invité(e)
    Par défaut
    Ok, j'ai vu l'erreur, Essaie ça :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    this.NGOGrid.ItemsSource = organisation.ToList<Organisation>();

  18. #18
    Membre habitué Avatar de adivinenza
    Inscrit en
    Juin 2008
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 91
    Points : 141
    Points
    141
    Par défaut
    J'ai toujours la meme erreur

  19. #19
    Invité
    Invité(e)
    Par défaut
    Bizarre
    Questions :
    - est que ta DataGrid affiche bien la liste des organisations ?
    - peux-t-on voir la déinition en XAML de ton DataGrid ?

  20. #20
    Membre habitué Avatar de adivinenza
    Inscrit en
    Juin 2008
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 91
    Points : 141
    Points
    141
    Par défaut
    la datagrid affiche bien la liste des Organisations.
    Voici le XAML de la DataGrid :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
            <DataGrid x:Name="NGOGrid" Style="{DynamicResource DataGridNgo1}" Background="Black" BorderBrush="{x:Null}" Foreground="White" VerticalGridLinesBrush="{x:Null}" HorizontalGridLinesBrush="{x:Null}" RowBackground="Black"  Margin="0,0,-3,-2" SelectedItem="{Binding Path=Nom}" SelectionChanged="NGOGrid_SelectionChanged" SelectionMode="Single" />

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [Débutant] Recuperer la valeur d'une cellule dans un DataGrid
    Par Sytchev3 dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 07/05/2012, 14h12
  2. recuperer les valeurs d'une cellule dans un fichier excel
    Par cortex59 dans le forum Général VBA
    Réponses: 2
    Dernier message: 24/04/2008, 13h10
  3. Recupere la valeur d'une ComboBox dans une autre cellule
    Par Henricoo dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 01/06/2007, 13h56
  4. [VB.NET] Recuperer la valeur d'une cellule d'un DataTable
    Par graphicsxp dans le forum Windows Forms
    Réponses: 2
    Dernier message: 29/03/2005, 10h59
  5. recuperer la valeur d une cellule
    Par Invité(e) dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 17/01/2005, 18h05

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