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 Forms Discussion :

[C#] Afficher un SQLDataReader dans un datagridview


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de doudoustephane
    Homme Profil pro
    Gérant
    Inscrit en
    Août 2005
    Messages
    1 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 129
    Par défaut [C#] Afficher un SQLDataReader dans un datagridview
    bonjour.

    alors voilà, je récupère de ma requête sql un sqldatareader que j'affecte à la propriété DataSource du composant datagridview.

    Malheureusement, meme s'il n'y a pas d'erreurs, rien ne s'affiche dans le datagridview.

    Comment faire ?
    Merci d'avance
    doudouallemand

  2. #2
    Membre Expert Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Par défaut
    Donner plus de précisions aux personnes susceptibles de t'aider, peut être

  3. #3
    Membre éprouvé
    Avatar de doudoustephane
    Homme Profil pro
    Gérant
    Inscrit en
    Août 2005
    Messages
    1 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 129
    Par défaut
    Citation Envoyé par Mose
    Donner plus de précisions aux personnes susceptibles de t'aider, peut être
    ben, en fait, j'ouvre une connexion sql de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    sqlconnexion ma_connexion = new sqlconnexion(chaine_connexion);
    ma_connexion.open();
    et après, j'exècute une requête qui suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    sqlcommand ma_command = new sqlcommand(ma_command, ma_connexion);
    sqldatareader mon_reader = ma_command.executereader();
    La fonction "executereader" retourne un sqldatareader.
    et donc, à partir de là, je voudrais pouvoir afficher ce qui est contenue dans mon sqldatareader directement (de préférences) dans un datagridview (ou autre chose en fait, mais j'aimerai bien ne pas avoir à reconstruire entièrement un tableau et ne pas faire un traitement au cas par cas)

    voilà, j'espère avoir été plus clair.
    n'hésitez à me demander plus d'informations si nécessaire
    merci à tous de votre aide par avance
    doudouallemand

  4. #4
    Invité
    Invité(e)
    Par défaut
    Maintenant il faut écrire dans ta table

    dans cet exmple, il y a une boucle mais je n'avais que ça sous la main



    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
     
    data = new DataTable();
     
    			MySqlDataReader rd;
     
     
    			dataGrid.RowHeadersVisible = true;
    			dataGrid.AllowSorting = false;
     
    			MySqlCommand comm = new MySqlCommand(ma_command, ma_connexion);
    			rd = comm.ExecuteReader();
    			string [] save = new string[100];
                                          int b = 0
    			while (rd.Read() )
    			{
    				elem = .......(rd[2].ToString());
    				save[b] = rd[7].ToString() ;
    				my_table.Columns.Add(rd[7].ToString() );
                                                       b++;
     
    			}
    			for (int a = 1 ; a < 100 ; a++)
    			{
    				DataRow my_row;
     
    				my_row = my_table.NewRow();
    				for (int c = 0; c < b; c++)
    				{
    					my_row[save[c]] = " ";
    				}
     
    				my_table.Rows.Add( my_row);	 
    			}
     
    			dataGrid.DataSource = my_table;
    		}
    bon courage

  5. #5
    Membre éprouvé
    Avatar de doudoustephane
    Homme Profil pro
    Gérant
    Inscrit en
    Août 2005
    Messages
    1 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 129
    Par défaut
    Citation Envoyé par outdighaz
    Maintenant il faut écrire dans ta table

    dans cet exmple, il y a une boucle mais je n'avais que ça sous la main



    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
     
    data = new DataTable();
     
    			MySqlDataReader rd;
     
     
    			dataGrid.RowHeadersVisible = true;
    			dataGrid.AllowSorting = false;
     
    			MySqlCommand comm = new MySqlCommand(ma_command, ma_connexion);
    			rd = comm.ExecuteReader();
    			string [] save = new string[100];
                                          int b = 0
    			while (rd.Read() )
    			{
    				elem = .......(rd[2].ToString());
    				save[b] = rd[7].ToString() ;
    				my_table.Columns.Add(rd[7].ToString() );
                                                       b++;
     
    			}
    			for (int a = 1 ; a < 100 ; a++)
    			{
    				DataRow my_row;
     
    				my_row = my_table.NewRow();
    				for (int c = 0; c < b; c++)
    				{
    					my_row[save[c]] = " ";
    				}
     
    				my_table.Rows.Add( my_row);	 
    			}
     
    			dataGrid.DataSource = my_table;
    		}
    bon courage
    on est réellement obliger de passer par un traitement manuel comme ça ?

  6. #6
    Membre Expert Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Par défaut
    Si tu passes par un DataReader, alors tu dois faire toi même l'adapter (l'objet qui lit les données dans le reader et les colle dans une DataTable)

    Pour te simplifier la vie, tu peux générer automatiquement ton DataSet de destination avec VS.Net (en fortement typé). Après le code est plus simple.

    Maintenant, si tout ça te semlbe trop compliqué, y'a les solutions toutes faites de VS.Net avec l'éditeur graphique, mais c'est beaucoup moins souple...

    dsl, j'ai pas d'exemple à te montrer.

Discussions similaires

  1. Réponses: 7
    Dernier message: 23/09/2010, 23h53
  2. afficher les données dans une datagridview d'une façon verticale
    Par mounim_taoufik dans le forum Windows Forms
    Réponses: 0
    Dernier message: 13/11/2009, 19h37
  3. Afficher des enregistrement dans un DataGridView
    Par Mohiiz dans le forum VB.NET
    Réponses: 4
    Dernier message: 22/10/2009, 15h28
  4. Afficher le detail dans un datagridview a la mode datagrid
    Par skunkies dans le forum Windows Forms
    Réponses: 5
    Dernier message: 05/03/2009, 11h15
  5. Réponses: 4
    Dernier message: 16/11/2006, 18h54

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