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 :

Remplir une datagridview


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Août 2009
    Messages
    273
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 273
    Par défaut Remplir une datagridview
    Bonjour,

    Je cherche à remplir une datagridview à partir de données que je récupère de ma base Oracle. J'ai testé le code suivant mais celà n'a pas l'air de fonctionner. Je n'ai aucune erreur.

    Tout d'abord j'ai crée une classe qui définit les attributs à récupérer et qui ressemble à ceci:

    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
     
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
     
    namespace MONPROJET
    {
        class MaClasse
        {
            public int Col1{ get; set; }
            public string Col2{ get; set; }
            public int Col3{ get; set; }
        }
    }
    et ci-dessous le code mon formulaire principale:

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
     
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Configuration;
    using System.Data.Common;
    using Oracle.DataAccess.Client;
    using Oracle.DataAccess.Types;
    using MONPROJET.Models;
     
    namespace MONPROJET.Views
    {
        public partial class monFormulaire: Form
        {
     
            List<MaClasse> listMaClasse= new List<MaClasse>();
     
            DataTable MaClasseTable = new DataTable();
     
            public monFormulaire()
            {
                InitializeComponent();
            }
     
            void CreateDataTable()
            {
                // Create table schema.
                DataColumn MaClasseCol1 = new DataColumn("Col1", typeof(int));
                DataColumn MaClasseCol2 = new DataColumn("Col2", typeof(string));
                DataColumn MaClasseCol3 = new DataColumn("Col3", typeof(int));
     
                MaClasseTable.Columns.AddRange(new DataColumn[] { MaClasseCol1 , MaClasseCol2 , MaClasseCol3 });
     
                foreach (MaClasse mc in listMaClasse)
                {
                    DataRow newRow = MaClasseTable.NewRow();
                    newRow["Col1"] = mc.Col1;
                    newRow["Col2"] = mc.Col2;
                    newRow["Col3"] = mc.Col3;
                    MaClasseTable.Rows.Add(newRow);
                }
     
                dataGridView.DataSource = MaClasseTable;
            }
     
            private void btnRemplir_Click(object sender, EventArgs e)
            {
                List<MaClasse> listMaClasse= new List<MaClasse>();
                string connectionString = GetConnectionString();
                string queryString =
                    "SELECT COL1, COL2, COL3 FROM MATABLE WHERE COL1= VAL1 AND COL2= VAL2 AND COL3= VAL3";
                using (OracleConnection connection =
                           new OracleConnection(connectionString))
                {
                    OracleCommand command = connection.CreateCommand();
                    command.CommandText = queryString;
     
                    try
                    {
                        connection.Open();
     
                        OracleDataReader reader = command.ExecuteReader();
     
                        while (reader.Read())
                        {
                            MaClasse maclasse = new MaClasse();
                            maclasse .COL1= (int)reader["COL1"];
                            maclasse .COL2= reader["COL2"] as String;
                            maclasse .COL3= (int)reader["COL3"];
                            listMaClasse.Add(maclasse);
                        }
                        reader.Close();
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message);
                    }
                }
     
                CreateDataTable();
     
            }
     
            static private string GetConnectionString()
            {
                // To avoid storing the connection string in your code, 
                // you can retrieve it from a configuration file.
                // Assumes Northwind.mdb is located in the c:\Data folder.
                return "Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=host)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=servicename)));User Id=userid;Password=password;";
            }
        }
    }
    Merci,

  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
    Déjà, tu te compliques la vie inutilement... Tu peux mettre la liste directement comme DataSource du DataGridView. Si tu préfères utiliser une DataTable, tu peux la remplir via un DataAdapter, comme expliqué ici (Remplace SqlConnection, SqlCommand etc par OracleConnection, OracleCommand etc)

    D'autre part, le code semble correct, donc à mon avis le problème est simplement que tu n'as pas défini les colonnes de ton DataGridView. Le plus simple est de le faire via le designer. Sinon tu peux aussi mettre la propriété AutoGenerateColumns du DGV à true pour les générer automatiquement (si tu n'as pas besoin de les personnaliser)

  3. #3
    Membre éclairé
    Inscrit en
    Août 2009
    Messages
    273
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 273
    Par défaut
    comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    string sql = "select * from departments where department_id < 60";
    cmd = new OracleCommand(sql, conn);
    cmd.CommandType = CommandType.Text;
     
    da = new OracleDataAdapter(cmd);
    cb = new OracleCommandBuilder(da);
    ds = new DataSet();
     
    da.Fill(ds);
     
    departments.DataSource = ds.Tables[0];
    ?

    Merci,

  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
    Oui, sauf que tu n'as pas besoin du CommandBuilder (ça sert pour la mise à jour de la base)

  5. #5
    Membre éclairé
    Inscrit en
    Août 2009
    Messages
    273
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 273
    Par défaut
    est ce que cette procédure ne sert plus à rien?

    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
     
            void CreateDataTable()
            {
                // Create table schema.
                DataColumn MaClasseCol1 = new DataColumn("Col1", typeof(int));
                DataColumn MaClasseCol2 = new DataColumn("Col2", typeof(string));
                DataColumn MaClasseCol3 = new DataColumn("Col3", typeof(int));
     
                MaClasseTable.Columns.AddRange(new DataColumn[] { MaClasseCol1 , MaClasseCol2 , MaClasseCol3 });
     
                foreach (MaClasse mc in listMaClasse)
                {
                    DataRow newRow = MaClasseTable.NewRow();
                    newRow["Col1"] = mc.Col1;
                    newRow["Col2"] = mc.Col2;
                    newRow["Col3"] = mc.Col3;
                    MaClasseTable.Rows.Add(newRow);
                }
     
                dataGridView.DataSource = MaClasseTable;
            }
    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 Jinkas Voir le message
    est ce que cette procédure ne sert plus à rien?
    Bah si tu ne l'appelles pas, elle ne sert à rien...

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

Discussions similaires

  1. [Débutant] Remplir une DataGridView avec un DataTable
    Par collisionv dans le forum Windows Forms
    Réponses: 4
    Dernier message: 24/04/2014, 21h33
  2. Remplir une datagridview avec un requête
    Par TikTak dans le forum C#
    Réponses: 3
    Dernier message: 18/03/2010, 16h40
  3. Réponses: 3
    Dernier message: 12/06/2009, 12h49
  4. Remplir une datagridview
    Par Lerchechem dans le forum Windows Forms
    Réponses: 1
    Dernier message: 02/06/2009, 23h38
  5. remplir une datagridview
    Par soul-31 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 28/05/2009, 18h09

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