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 :

[DataGridView] Source : ComboBoxColumn


Sujet :

Windows Forms

  1. #1
    Membre éclairé
    Inscrit en
    Octobre 2004
    Messages
    359
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 359
    Par défaut [DataGridView] Source : ComboBoxColumn
    Bonjour,

    Pas facile de faire un titre pour mon cas !

    En WinForm, j'ai un DataGridView composé de 3 colonnes.
    Colonne 1 de type DataGridViewComboBoxColumn
    Colonne 2 de type DataGridViewTextBoxColumn
    Colonne 3 de type DataGridViewTextBoxColumn

    Quelle genre de requête (type SQL) faut-il faire, ou quelle astuce utiliser pour le remplir par sa propriété DataSource, sans qu'il ajoute des nouvelles colonnes et que ses 3 colonnes prennent les bonnes valeur (mon problème se situe au niveau de la Colonne 1)

    Je ne sais pas si j'ai été asser clair ?

    édit: En base, je lance une requête du type : GetElementsByID(id).
    je récupère les informations dans un DataSet. Je peux le créer en codant ou utiliser l'objet (que je ne maitrise pas trop)

  2. #2
    Membre Expert Avatar de LooserBoy
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    1 085
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2005
    Messages : 1 085
    Par défaut
    Déjà pour que ta grid utilise tes 3 colonnes sans en ajouter, il faut mettre sa propriété AutoGenerateColumns à... false. bravo!
    Ensuite, ta colonne de combobox a elle aussi une propriété DataSource, DisplayMember et ValueMember qu'il va faloir gérer de la même manière qu'une combobox classique.

    [EDIT]J'édite car des fois je suis pas particulièrement clair... [/EDIT]

  3. #3
    Membre éclairé
    Inscrit en
    Octobre 2004
    Messages
    359
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 359
    Par défaut
    Donc, à moins de faire une requête compliquer, tu me suggère de faire une requête pour la ComboBox, et une autre pour les TextBox ?
    Vu comme ça, en découpant le problème en sous-problème ça deviens jouable !

    Je teste ça...
    merci

  4. #4
    Membre Expert Avatar de LooserBoy
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    1 085
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2005
    Messages : 1 085
    Par défaut
    Citation Envoyé par Ticoche Voir le message
    Donc, à moins de faire une requête compliquer, tu me suggère de faire une requête pour la ComboBox, et une autre pour les TextBox ?
    Une requete pour peupler ta combobox et une pour recupérer chaque ligne te ta grid, tout à fait.

  5. #5
    Membre éclairé
    Inscrit en
    Octobre 2004
    Messages
    359
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 359
    Par défaut
    Citation Envoyé par LooserBoy Voir le message
    Une requete pour peupler ta combobox et une pour recupérer chaque ligne te ta grid, tout à fait.
    Par exemple, ma requête renvoi 12 lignes sur 3 colonnes, et j'ai envi que mon DataGridView se remplisse de telle sorte, que quand je sélectionne un élément de la ComboBox, les 2 champs TextBox affichent les informations de la bonne ligne.

    On peut le faire en faisant un Binding, ou alors il faut s'abonner à un événement (quand on change d'élément de la ComboBox) ?

    édit: On suppose également que je créé mon DataSet dans le code (je n'utilise pas d'objet DataSet). On peut associé aux Propriétés du dgv un DataSet créer dans le code ? Sinon, pour le moment ce que je fais, c'est créer un objet DataGridViewComboBoxColumn et je lui applique "à la main" la source de données.

    édit: Pour le moment, mon "meilleur" résultat, c'est 12 lignes dans mon dgv avec :
    Colonne 1 : tous les ComboBox vide !
    Colonne 2 & Colonne 3 : rempli correctement (mais sur 12 lignes, alors que j'en voudrai qu'une seule, et sélectionné à partir de la ComboBox pour afficher les informations)

    édit: Voici un bout de mon code
    dgvAgenda1.AutoGenerateColumns = false;
    OngletAgenda oglAgenda = new OngletAgenda(codeSinistre);
    DataSet dsOnglet = oglAgenda.DataSetAgenda;
    if (oglAgenda != null)
    {
    dgvAgenda1.DataSource = dsOnglet;
    dgvAgenda1.DataMember = "Agenda";
    DataGridViewComboBoxColumn dgvAgenda1Col1;
    dgvAgenda1Col1 = (DataGridViewComboBoxColumn)dgvAgenda1.Columns["colAgenda1Operateur"];
    //dgvAgenda1Col1.DataSource = oglAgenda.CodeOperateur; // pb
    dgvAgenda1Col1.DataSource = dsOnglet; // pb
    //dgvAgenda1Col1.DataPropertyName = "CodeOperateur";
    dgvAgenda1Col1.DisplayMember = "CodeOperateur";
    //dgvAgenda1Col1.ValueMember = "CodeOperateur";

    }
    J'ai une Exception : Le champ appelé CodeOperateur n'existe pas.
    Je me perds entre les propriétés DisplayMember, ValueMember et DataPropertyName (et sans doute d'autre)
    Je vais faire une capture d'écran de mon DataSet, si ça peut vous aidez ?

    Capture d'ecran

    édit: Le résultat que j'obtient actuellement :
    Dans mon dgv j'ai 12 lignes :
    Colonne 1 : pour chaque ligne, j'ai une liste des tous les éléments
    Colonne 2 & 3 : Chaque ligne correspond à un enregistrement

    Mon but => Avoir 1 seul ligne avec :
    Colonne 1 : ComboBox rempli avec une liste de tous les éléments
    Colonne 2 & 3 : Un enregistrement qui correspond à la séléction du ComboBox.

    Je sais le faire en evenementielle, mais est-ce que le Studio ne peut pas le gérer automatiquement par liaison des données ?

  6. #6
    Membre éclairé
    Inscrit en
    Octobre 2004
    Messages
    359
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 359
    Par défaut
    Sinon, peut on faire :
    J'ai 12 lignes.
    Dans mon DataGridView, la 1ère colonne est un ComboBox, et 2 colonnes de TextBox.

    J'aimerai que le DataGridView se remplisse en selectionnant pour chaque ligne le bon element sur la colonne 1 dans la ComboBox ?
    (donc 12 lignes au total)

    Merci, et bonne année 2008

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

Discussions similaires

  1. Sorting DataGridView binding source List<T>
    Par Leole dans le forum C#
    Réponses: 3
    Dernier message: 26/11/2008, 11h59
  2. [C# 2.0]DataGridView ComboBoxcolumn
    Par kekesilo dans le forum Windows Forms
    Réponses: 3
    Dernier message: 18/06/2008, 17h17
  3. Réponses: 3
    Dernier message: 25/03/2008, 09h24
  4. [DataGridView] ComboBoxColumn modifiable
    Par Ticoche dans le forum Windows Forms
    Réponses: 8
    Dernier message: 06/01/2008, 12h37
  5. DATAGRIDVIEW et ComboBoxColumn
    Par flatron dans le forum Windows Forms
    Réponses: 2
    Dernier message: 14/05/2007, 23h18

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