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 :

Textbox + Combobox dans une colonne datagridview [Débutant]


Sujet :

Windows Forms

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2013
    Messages : 60
    Points : 35
    Points
    35
    Par défaut Textbox + Combobox dans une colonne datagridview
    Bonjour,

    Dans mon dgv, j'ai plusieurs colonne qui s'affiche via ma table P.
    J'aurais voulu savoir si il était possible d ajouter dans une de mes colonne,une listbox(qui appartient a ma tableP) lorsque je double clic par exemple sur mon dgv?

    Merci d'avance !

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2010
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 479
    Points : 762
    Points
    762
    Par défaut
    Salut,
    comment es-ce que tu remplis ton datagridview ?
    Via la propriété DataSource ou en manuel boucle + dgv.Rows.Add(colonne) ?

    Après pour ajouter une colonne si tu es dans le cas "manuel" c'est facile :
    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
     
    dgv.Columns.Add("nomDeLaColonne1", "enteteDeLaColonne1");
                dgv.Columns.Add("nomDeLaColonne2", "enteteDeLaColonne2");
                dgv.Columns.Add("nomDeLaColonne3", "enteteDeLaColonne3");
                DataGridViewRow ligne = new DataGridViewRow();
                DataGridViewTextBoxCell case1 = new DataGridViewTextBoxCell();
                DataGridViewTextBoxCell case2 = new DataGridViewTextBoxCell();
                DataGridViewComboBoxCell case3 = new DataGridViewComboBoxCell();
                case3.Items.Add("item 1");
                case3.Items.Add("item 2");
                case3.Items.Add("item 2");
                ligne.Cells.Add(case1);
                ligne.Cells.Add(case2);
                ligne.Cells.Add(case3);
                dgv.Rows.Add(ligne);
    Ce code ajoute 3 colonnes.
    Les 2 premières sont des cases normales vides.
    La troisième est une combobox qui contient 3 items.

    Si tu remplies sont dgv via un DataSource il faut (jamais fait mais je pense) utiliser la propriété DataSource relative à toute ta colonne de type combo
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    (dgv.Columns["nomDeLaColonne3"] as DataGridViewComboBoxColumn).DataSource = SourceDesItems
    si tu veux que toutes les combo de chaque lignes aient la même liste;
    ou en assignant la source àa chaque combo de chaque ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (dgv.rows[indexLigne].Columns["nomDeLaColonne3"] as DataGridViewComboBoxCell).DataSource = SourceDesItems
    Après à vérifier mais je crois qu'il faut assigner les prop ValueMember et DisplayMember de la colonne ou de la cellule pour avoir un affichage.

    Voila j'espère t'avoir aidé.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2013
    Messages : 60
    Points : 35
    Points
    35
    Par défaut
    Salut !
    En fait,je ne veux pas ajouter une colonne,je veux qu'une combobox remplis s'ajoute lors d'un double clic sur le dgv dans une colonne qui est déjà remplis par des données.
    Je pense que ton code va déjà bien m'aider si il est possible de faire ce que je cherche !

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2010
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 479
    Points : 762
    Points
    762
    Par défaut
    Oui je pense que c'est possible.
    Tu t'abonne à l'événement cell double clic du dgv. En argument de la fonction tu devrais avoir l'index de la ligne et de colonne qui te permettent de repérer la case double cliquée.
    Après ça revient à faire dgv[indexColonne, indexLigne] = une nouvelle DataGridViewComboBoxCell déjà remplie.

    Tiens nous au courant a+

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2013
    Messages : 60
    Points : 35
    Points
    35
    Par défaut
    Je réussis bien a ajouter la ligne mais je ne vois vraiment pas comment faire pour que ma combobox s'affiche dans la derniére ligne de ma premiére colonne par exemple
    Je suis un peu perdu là a vrai dire!

  6. #6
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 048
    Points : 2 201
    Points
    2 201
    Par défaut
    Je vais peut être dire une connerie...

    C'est quoi l'interêt de faire des cellules textbox qui se transforme en combobox lors d'un clique sur le contrôle? Pourquoi tu ne mets pas des cellules combobox dès le début ?

    A part pour une raison visuel (on ne désire pas voir le boutton du combobox) je peine à comprendre. Et encore dans ce cas, je me demande si c'est pas plus pratique de travailler sur l'evenement paint de la cellule.

  7. #7
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2010
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 479
    Points : 762
    Points
    762
    Par défaut
    Le coeur à ses raisons que la raison ignore
    Cela dit la remarque est judicieuses et je ne comprends pas non plus le but final de la manœuvre. Peut-être que tu peux nous éclairer ? Il doit y avoir un moyen plus simple d'arriver à faire ce que tu veux.

    entre () j'avais pas compris que tu voulais transformer une cellule de type texte en une combo. A bien y réfléchir je sais pas si c'est possible...
    Le seul truc que je vois c'est d'ajouter une nouvelle ligne (juste en dessous ce cette cliquée (Rows.AddRange(...)) contenant les mêmes colonnes/données que l'ancienne + la combo à la place de ta case texte et en supprimant l'ancienne. Mais redéfinir le type de la cellule ça me semble pas trop possible.

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2013
    Messages : 60
    Points : 35
    Points
    35
    Par défaut
    En fait, j'ai deux dgvtextbox(CodeProjet,NomProjet) qui affiche des données par ligne dans deux colonne de mon dgv et deux colonne vide que je dois remplir.J'insere ensuite tous ca dans ma BDD.

    Le but,c est que lorsque j'ai remplis mes deux colonne vide avec mes infos par rapport aux dgvtextbox,je puisse ajouter une autre ligne avec ma dgvcombobox qui liste ts mes projets et que je remplisse encore mes colonne vide,tous ca sera ensuite inséré dans ma BDD.

    C'est plus clair là ?

  9. #9
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2010
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 479
    Points : 762
    Points
    762
    Par défaut
    Pas vraiment; perso je me noie
    Si tu as encore des soucis poste une image; quitte à retoucher avec paint pour qu'on voit les effets à donner.

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2013
    Messages : 60
    Points : 35
    Points
    35
    Par défaut
    Dans la colonne une,a la troisiéme ligne,je veux pouvoir afficher tous les code de projet(titi,toto,tata,tutu,tretre) dans une combobox.
    C'est bien plus clair là ?
    Images attachées Images attachées  

  11. #11
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 048
    Points : 2 201
    Points
    2 201
    Par défaut
    L'exemple n'est pas très clair car tu cites les valeurs "titi,toto,tata,tutu,tretre" en tant que code de projet et sur l'image ça correspond à la colonne nom de projet (on ne sais pas si le code de projet correspond au numéro ou au nom, logiquement je dirais code = numéro). Bref on se mélange un peu les pinceaux...

    Je n'arrive pas non plus à déterminer si ta grille représente la liste de tes projets ou si elle représente une attribution en jour de travail à tes différents projet (ce qui voudrait dire qu'il y a plusieurs ligne pouvant avoir le même code, numéro).

    Dans le cas n°1, ta question n'as aucun sens parce qu'on tourne en boucle (c'est une liste déroulante contenant toutes les valeurs à priori non utilisable vu qu'un code de projet est logiquement unique)

    Dans le cas n°2, j'utiliserais une seul colonne pour représenter le projet (sous une forme textuel pouvant être une combinaison du code et du numéro) de type combobox (peuplée par la liste des projets). Bien entendu dans ce cas la liste des projets est définie/gérée ailleurs. On peut éventuellement imaginer une colonne de type combobox pour séléctionner un projet par son identifiant et d'autres colonne en lecture seul pour afficher des données descriptives du projet séléctionner.

    Bref, je te recommande de prendre un peu de recul sur ce topic et d'expliquer l'idée qu'il y a derrière ta grille (Qu'est-ce qu'elle doit afficher/permettre de saisir). Quels sont les données (y.c. leur schéma) à gérer derrière tout ça...

  12. #12
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2013
    Messages : 60
    Points : 35
    Points
    35
    Par défaut
    ->Ma liste représente une attribution en jour de travail à différent projet et pour différente personne.

    ->Les valeurs "titi,toto" sont biensur le nom du projet comme sur ma capture d'écran.

    ->On s'écarte un peu du sujet je trouve parce que ma question au départ était juste de savoir si il était possible d'afficher une liste déroulante sur la troisiéme ligne et premiére colonne de mon dgv lors d'un clic sur un bouton,ca peut pas être plus clair.

    ->Je n'ai pas besoin de prendre de recul car je sais très bien ce qu'elle doit afficher,elle l'affiche et l'insére déjà dans une autre table qui me sert a gérer des temps par rapport au projet(c est pour ca qu il faut que j'affiche mes code projet unique) si tu veux tous savoir.La liste déroulante est un complément de ce que je veux faire au bout du compte.

  13. #13
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2010
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 479
    Points : 762
    Points
    762
    Par défaut
    Dans ce cas le code que j'ai fourni dans mon premier post te permet de faire ce que tu demandes.
    A toi de charger la liste des projets dans la combo à partir de ta base de données sous l'événement que tu souhaites (clic bouton ou double clic dgv etc...).

  14. #14
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2013
    Messages : 60
    Points : 35
    Points
    35
    Par défaut
    C'est pour ca que j'ai écris ca ensuite !

    Je réussis bien a ajouter la ligne mais je ne vois vraiment pas comment faire pour que ma combobox s'affiche dans la derniére ligne de ma premiére colonne par exemple
    Je suis un peu perdu là a vrai dire!
    Ma ligne s'ajoute bien mais pas ma combobox.Etant donné que ma colonne est déjà créée, je ne vois pas très bien comment positionner ma combobox sur celle ci...

  15. #15
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2010
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 479
    Points : 762
    Points
    762
    Par défaut
    Dans ta capture la dernière ligne qui est affichée de type "newLine".
    En fait c'est le datagridview qui se charge de t'ajouter une nouvelle ligne vide à la fin car tu as mis la propriété allowUserToAddRows.
    Si tu gardes cette prop tu ne pourras jamais placer ta combobox sur la dernière ligne puisque ta colonne est de type DataGridViewTextBoCell et non ComboboxCell. Il t'ajoutera automatiquement une ligne contenant une textbox et non une combobox.

    Moi je te conseille de ne pas passer par l'éditeur graphique. Supprime ttes tes colonnes et colle le code que je t'ai donnée dans le constructeur. Mets aussi la propriété AllowUserToAddRows = false
    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
     
     
    dgv.Columns.Add("nomDeLaColonne1", "enteteDeLaColonne1");
                dgv.Columns.Add("nomDeLaColonne2", "enteteDeLaColonne2");
                DataGridViewRow ligne = new DataGridViewRow();
    {
                DataGridViewTextBoxCell case1 = new DataGridViewTextBoxCell();
                DataGridViewTextBoxCell case2 = new DataGridViewTextBoxCell();
                ligne.Cells.Add(case1);
                ligne.Cells.Add(case2);
                dgv.Rows.Add(ligne);
    }
    {
     DataGridViewComboBoxCell case1 = new DataGridViewComboBoxCell();
                case3.Items.Add("item 1");
                case3.Items.Add("item 2");
                case3.Items.Add("item 2");
    DataGridViewTextBoxCell case2 = new DataGridViewTextBoxCell();
                ligne.Cells.Add(case1);
                ligne.Cells.Add(case2);
                dgv.Rows.Add(ligne);
    }
    Ce code ajoute 2 colonnes sans type à ton dgv.
    Ajoute une ligne avec 2 textboxes.
    Ajoute une ligne avec une combo et une textbox.
    Grosso-modo c'est ce que tu veux faire.
    A+

  16. #16
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2013
    Messages : 60
    Points : 35
    Points
    35
    Par défaut
    Oui,c'est pratiquement ce que je veux faire,je vais essayé de me débrouiller avec ton code.

    je te remercie beaucoup pour ton aide en tous les cas .Bon week end !

  17. #17
    Nouveau Candidat au Club
    Homme Profil pro
    casino
    Inscrit en
    Août 2014
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : casino

    Informations forums :
    Inscription : Août 2014
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Pinger une liste d'ip sur DGV
    Bonjour,
    j'aimerai savoir si vous savez le "code" pour avoir un ping automatique de toutes les adresses IP remplit dans DGV.
    Dès que le ping de l'adresse s'effectue alors ca remplit dans la colonne 2 un texte disant "ok" ou "not ok"


    J'ai beau chercher, mais aucun ne donne la reponse .. :/


    Merci d'avance

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

Discussions similaires

  1. ajouter un tooltip dans une colonne datagridview
    Par ilmatic dans le forum Windows Forms
    Réponses: 1
    Dernier message: 27/03/2014, 13h13
  2. insérer une combobox dans une colonne datagridview
    Par Tommy57 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 22/07/2013, 16h25
  3. Réponses: 7
    Dernier message: 11/02/2013, 21h37
  4. Réponses: 2
    Dernier message: 16/11/2007, 13h39
  5. [VB.NET] Calculs dans une colonne d'un datagridview
    Par boulete dans le forum Windows Forms
    Réponses: 3
    Dernier message: 31/03/2006, 15h11

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