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 :

Voir les données d'une table dans un Datagrid


Sujet :

Windows Presentation Foundation

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 252
    Points : 192
    Points
    192
    Par défaut Voir les données d'une table dans un Datagrid
    Bonjour à tous
    Je débute en wpf et j'ai un souci pour afficher les données dans un datagrid.
    J'ai fais une dll que je référence dans mon projet, qui assure la liaison avec ma base de donnée.
    Cependant, je n'arrive pas à afficher ce contenu dans un datagrid, la completion ne code ne me propose pas naturellement le datasource...

    Voici le code :

    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
     
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Data;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Imaging;
    using System.Windows.Navigation;
    using System.Windows.Shapes;
    using System.Windows.Forms;
    using System.Data;
    using System.Windows.Forms.Integration;
    using malibrairie.DataAccessLibrary;
     
    namespace WpfApplication12
    {
        /// <summary>
        /// Logique d'interaction pour MainWindow.xaml
        /// </summary>
        public partial class MainWindow : Window
        {
            public MainWindow()
            {
                InitializeComponent();
                SPDataAccess sp = new SPDataAccess();
     
            }
     
            private void dataGrid1_SelectionChanged(object sender, SelectionChangedEventArgs e)
            {
                dataGrid1.datasource = sp.spgetAffaire();
            }
        }
    }
    Merci d'avance

  2. #2
    Membre éprouvé Avatar de obito
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 773
    Points : 948
    Points
    948
    Par défaut
    Bonjour,

    Tu ne confond pas DataContext ET ItemSource?

    ItemSource, te permet de binder sur un DataView par exemple pour afficher des données.

    Code XAML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <DataGrid Name="gd1" ItemSource="{Binding NomMethode}" />

    En C# dans le loaded par ex. :

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    gd1.DataContext = mon_instance;
    ►Ne pas oublier le

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 252
    Points : 192
    Points
    192
    Par défaut
    Ce n'est pas impossible du tout.
    Le but étant d'afficher, à l'aide de ma procédure stocké (spgetAffaire) la table affaire.
    Dois-je faire un truc dans le style pour le XAML:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <DataGrid Name="gd1" ItemSource="{Binding SPDataAccess}" />
    Et pour le C#

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    gd1.DataContext = spGetAffaire;
    Merci d'avance

  4. #4
    Membre éprouvé Avatar de obito
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 773
    Points : 948
    Points
    948
    Par défaut
    En fait ca serait l'exact inverse

    Code XAML : Sélectionner tout - Visualiser dans une fenêtre à part
    <DataGrid Name="gd1" ItemSource="{Binding spGetAffaire}" />

    Et pour le C#

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SPDataAccess sp = new SPDataAccess();
    gd1.DataContext = sp;
    ►Ne pas oublier le

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 252
    Points : 192
    Points
    192
    Par défaut
    Tout d'abord, merci beaucoup pour l'aide que tu as pu m'apporter.
    Cela marche (presque) mais il me reste un (dernier j'espère) souci.
    Dans la table, il y a uniquement du texte, soit en string, soit en int.
    Et j'ai une erreur du genre :
    L'éditeur DataBinding ne prend pas en charge la modification des objets de type ''String''.
    Faut t-il que je fasse un genre de cast ? Et si oui, comment ?
    Je dois avouer que je n'ai pas trouver de bon tuto sous wpf....
    Merci d'avance

  6. #6
    Membre éprouvé Avatar de obito
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 773
    Points : 948
    Points
    948
    Par défaut
    Sur ce point je ne peux pas aider. Je n'ai fait que faire de l'affichage de données, sans aucune modification possible dessus (car si j'a bien compris tu souhaite pouvoir, dans ton DataGrid, modifier une ligne c'est ça ?).

    Si cast il doit y avoir (mais j'espère que certains pourront t'aider plus sur ce problème particulier) ce sera dans ta méthode spGetAffaire. Un cast peut se faire comme ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    xElement m;
     
    string test = (string)m.Element("AttributXML");
    C'est un exemple comme un autre bien sur, il y a d'autre possibilités de cast comme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int i = Convert.ToInt32("1");
    Mais regarde aussi sur le net le mode Two Way du binding :

    http://msdn.microsoft.com/en-us/libr...ndingmode.aspx
    ►Ne pas oublier le

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 252
    Points : 192
    Points
    192
    Par défaut
    En fait, je veux juste afficher.
    Ma procédure stockée spGetAffaire contient un truc du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select * from Affaire
    Elle fonctionne très bien, mais en ASP.Net sur un gridview
    Donc la je souhaite afficher dans un Datagrid le résultat de la requête, et j'ai ce message d'erreur...
    J'ai oublié de signaler que je suis sur SQL server express 2008 et VS 2010, framework 4.0
    Ca a l'air tout bête mais là j'avoue que je suis perdu...
    Merci en tout cas du cous de main !

  8. #8
    Membre éprouvé Avatar de obito
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 773
    Points : 948
    Points
    948
    Par défaut
    Ha d'accord. En fait je n'ai rempli qu'une fois un DataGrid en WPF de ma vie^^ :

    Code C# : 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
     
    DataSet ds = new DataSet();
    string sql = "ma requete";
    sqlConnection connect = "ma connexion";
    SqlCommand cmd = new SqlCommand(sql, connect);
    SqlDataAdapter verif = new SqlDataAdapter(cmd);
    verif.Fill(ds);
     
    DataView _dv = new DataView(ds.Tables[0]);
     
    // Filtre qui permet de n'afficher que les 100 premières lignes   
    _dv.RowFilter = String.Format("Id >= {0}", (ds.Tables[0].Rows.Count - 100));
     
    // Je ne l'écris pas mais ne pas oublier de fermer la connexion
     
    return _dv;

    Voila ce qu'il y avait dans ma propriété (qui retournait un DataView) qui était bindé sur ItemSource de mon DataGrid...
    ►Ne pas oublier le

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 252
    Points : 192
    Points
    192
    Par défaut
    Merci bien !
    Le code n'est pas absolument identique, mais je pense pouvoir me débrouiller avec ça !
    Merci beaucoup pour ton aide en tout cas
    A+

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

Discussions similaires

  1. extraire les données d'une table dans un fichier .txt
    Par KilKennY dans le forum Développement
    Réponses: 3
    Dernier message: 24/04/2009, 16h14
  2. Réponses: 5
    Dernier message: 25/03/2009, 01h43
  3. Réponses: 1
    Dernier message: 25/04/2008, 16h17
  4. Importer les données d'une table dans un MSFLEXGRID
    Par overdoze dans le forum Access
    Réponses: 1
    Dernier message: 27/08/2007, 17h10
  5. Enregistrer les données d'une table dans un fichier texte word ou excel
    Par maamar1979 dans le forum Connexion aux bases de données
    Réponses: 2
    Dernier message: 14/06/2006, 13h41

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