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 :

DataGridView comboBox et datatable


Sujet :

C#

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 82
    Points : 60
    Points
    60
    Par défaut DataGridView comboBox et datatable
    Bonjour,

    Quand je lie un Datatable a un DataGridView avec DataSource il m'impose ces colonnes ce qui n'est pas tres pratique ,lorsque l'on a déja crée des colonnes il en rajoute , et cela devient bloquant si l'on veut mettre des combobox.

    En gros si dans mon DataTable il y a 3 champ texte cela n'est pas etre genant par contre si j'ai des clef exterieur relier à d'autres DataTable je voi pas comment faire.

    dans mon DataGridView j'ai , annee , Domaine ,profession,secteur, j'ai une colonne texte pour annee et trois comboBox relié à des DataTable.
    si mes trois combobox sont relié a ma base de donne via leur datatable ce n est pas le cas de mon DataGridView car si je le relie avec un datatable il va m'imposer des colonne de base sans combo .

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 82
    Points : 60
    Points
    60
    Par défaut
    ok ma question est pas tres clair alors je vais decomposer par etatpe:

    pour remplir un DatagridView avec une table de ma base de donne je fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    OleDbConnection oConn = new OleDbConnection(connStr);
     
    string strSql = "SELECT * FROM Poste_principal ";
     
    OleDbDataAdapter oDaPostePrinciplal = new OleDbDataAdapter(strSql,oConn);
     
    DataTable oDTPostePrinciplal = new DataTable();
    oDaPostePrinciplal.Fill(oDTPostePrinciplal);
     
    dataGridViewPostePrincipale.DataSource = oDTPostePrinciplal;
    voila ca remplit mon DatagridView mais les colonnes sont impossé par le DataTable "oDTPostePrinciplal".
    Je peux les modifier apres comme ceci par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     dataGridViewPostePrincipale.Columns["Poste_principal"].HeaderText = "Poste principal";
    mais cela reste assez limité et surtout je ne sait pas comment modifier pour avoir une comboBox pour une de mes colonne.

    J'aurai voulu pouvoir creer mes colonnes comme je le veux puix remplir mon DataGridView avec mes colonnes créé pas qu'il m'en fabrique d'autres.

  3. #3
    Membre averti Avatar de Contrec
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39

    Informations forums :
    Inscription : Mars 2005
    Messages : 597
    Points : 342
    Points
    342
    Par défaut
    Si tu as Visual Studio, tu peux choisir beaucoup plus d'options sur tes colonnes de DataGridView comme par exemple le type de cellules (ComboBox, CheckBox etc..), le nom de la colonne, si la colonne doit etre affichee ou pas ect...

    Que cherches-tu vraiment ?


    Si tu veux un ComboBox, il va falloir donner la source de donnees pour le remplir. Par exemple j'ai une table de numeros associes a des noms:

    NUM NOM

    1 TOTO
    2 TATA
    3 TITI
    4 TUTU

    Dans ma DataGridView que j'ai rempli avec un DataTable, j'ai des colonnes et une d'elles est le numero du nom (cle etrangere cote base de donnees). Cela m'affiche donc:

    COLONNE1 NUM
    LigneA 2
    LigneB 4
    LigneC 3
    LigneD 2

    Pour que la colonne NUM affiche les vrai noms et pas les numeros sous forme de ComboBox, il faut definir la colonne NUM en DataGridViewComboBox. Cette ComboBox doit avoir la premiere table en tant que DataSource. Ainsi partout ou il y a aura 2 tu auras TATA affiche. Si tu choisis TUTU dans ton nouveau ComboBox, la valeur de NUM sera changee en 4.

    Resultat apres:


    COLONNE1 NUM
    LigneA TATA
    LigneB TUTU
    LigneC TITI
    LigneD TATA

    avec la colonne NUM contenant des ComboBox.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 82
    Points : 60
    Points
    60
    Par défaut
    Pour les comboBox j'en ai justement dans mon Datagridview relié a une DataTable en faisant comme avec n'importe quel comboBox:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    string strSql = "SELECT NUM,NOM FROM NomTable";
    DataTable oDtNom = new DataTable();
    OleDbDataAdapter oDaNom = new OleDbDataAdapter(strSql,oConn);
     
    oDaNom.fill(oDtNom);
    ColumnDomaine.DataSource = oDtNom;
    ColumnDomaine.ValueMember = "NUM";
    ColumnDomaine.DisplayMember = "NOM";
    apres ce que je voualais c'est faire un DataTable pour ma DataGridView et relier les colonne entre elle,:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    strSqlCar = "SELECT année,NUMNOM FROM Carriere"                                        
    oDaCarriere = new OleDbDataAdapter(strSqlCar,oConn);
    oDaCarriere.Fill(oDTCarriere);
    dataGridViewCarriere.DataSource = oDTCarriere;
    le pb c'est qu'il gerrais les colonne et je pouvais pas les syncroniser avec mes comboBox, on ma donne une indication sur un forum

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     dataGridViewCarriere.AutoGenerateColumns = false;
    voila ca genere pas les colonnes ensuite pour les relie on ecrit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     ColumnNUMNOM.DataPropertyName = "NUMNOM";
    on a la propiete dans l'interface de visual studio qui le genere.

    voila c'est tout et ca marche

    merci qd meme d'avoir repondu a mon message pas tres claire

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

Discussions similaires

  1. [c#] Remplir un DataGridView avec plusieurs DataTable
    Par macfred dans le forum Windows Forms
    Réponses: 2
    Dernier message: 23/02/2010, 11h02
  2. Réponses: 5
    Dernier message: 23/03/2008, 08h21
  3. DataGridView : ComboBox
    Par BkD35 dans le forum VB.NET
    Réponses: 4
    Dernier message: 01/03/2008, 00h16
  4. liaison dynamique Combobox et DataTable
    Par Papy214 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 19/12/2007, 17h25
  5. Réponses: 5
    Dernier message: 05/11/2007, 23h30

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