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 :

combobox pour un datagridview


Sujet :

Windows Forms

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 107
    Points : 56
    Points
    56
    Par défaut combobox pour un datagridview
    Bonjour,

    j'aimerais savoir quel est l'événement équivalent au row_Created en asp.net pour une application windows, un datagridview.
    Pour information je suis sous vs 2008.

    Mon problème est que j'ai un datagridview chargé avec un datatable.
    Celui-ci contient une clé étrangère vers une table.
    J'ai ajouter un comboBox pour afficher les choix possibles en le chargeant avec un autre datatable.
    J'ai donc besoin à la création de chaque ligne, chargé le combobox en fonction de la valeur de la premiere colonne de la ligne du datagridview ( c'est une date) et le positionner sur la bonne clé étrangère et si cette clé est différente de null alors le combo est disable.

    Voilà ce que j'ai testé dans le rows_Added mais il ne me récupère aucun champ dans le combo alors que j'ai testé ma requête séparément et elle me retourne bien quelque chose.

    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
    private void dgvExpedition_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
            {
                string dateDemandée;
                if (dgvExpedition.Rows[e.RowIndex].Cells["dateDem"].Value != null)
                {
                    if (dgvExpedition.Rows[e.RowIndex].Cells["dateDem"].Value.ToString() != "")
                    {
                        dateDemandée = dgvExpedition.Rows[e.RowIndex].Cells["dateDem"].Value.ToString();
     
     
                        DataGridViewComboBoxColumn cbxLivreur = ((DataGridViewComboBoxColumn)dgvExpedition.Columns["columnLivreur"]);
                        cbxLivreur.DataSource = localhost.getLivDispo(dateDemandée);
                        cbxLivreur.ValueMember = "LIV_ID";
                        cbxLivreur.DisplayMember = "LIV_NOM";
     
                        columnLivreur.DataPropertyName = "LIV_ID";
                    }
                }
            }
    Je me suis également rendu sur ce sujet mais ça ne m'a pas vraiment aidé.
    http://www.developpez.net/forums/d45...box-datatable/

    MErci de vos propositions

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2008
    Messages
    337
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 337
    Points : 456
    Points
    456
    Par défaut
    Met tout celà dans un boucle car l'évènement ajoute un collection de ligne.
    Met ton code dans une boucle allant de e.RowIndex j'usqu'à e.RowIndex + e.rowCount!

    du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    private void dgvExpedition_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
            {
                     for(int i = e.RowIndex; i < e.RowIndex + e.RowCount; i++)
                     {
                             // Traitement.
                     }
            }

  3. #3
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 107
    Points : 56
    Points
    56
    Par défaut
    J'ai testé ceci dans le rows_added mais il ne m'affiche toujours 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
                string dateDemandée;
                for (int i = e.RowIndex; i < e.RowCount; i++)
                {
                    if (dgvExpedition.Rows[i].Cells["dateDem"].Value != null)
                    {
                        if (dgvExpedition.Rows[i].Cells["dateDem"].Value.ToString() != "")
                        {
                            dateDemandée = dgvExpedition.Rows[i].Cells["dateDem"].Value.ToString();
     
                            DataGridViewComboBoxColumn column = new DataGridViewComboBoxColumn();
     
                            //((DataGridViewComboBoxColumn)dgvExpedition.Rows[i].Cells["columnLivreur"])
                            column.DataSource = localhost.getLivDispo(dateDemandée);
                            column.ValueMember = "LIV_ID";
                            column.DisplayMember = "LIV_NOM";
                        }
                    }
                }
    Je suppose qu'il ne rempli pas le combobox de mon datagridview qui s'appelle colLivreur.

    Je suis complètement bloqué

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2008
    Messages
    337
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 337
    Points : 456
    Points
    456
    Par défaut
    Essai comme celà ! tu castais ta cellule en colonne ... je n'avais pas vu au départ car DataGridViewComboBoxCell et DataGridViewComboBoxColumn se ressemble beaucoup ....

    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
                string dateDemandée;
                for (int i = e.RowIndex; i < e.RowCount; i++)
                {
                    if (dgvExpedition.Rows[i].Cells["dateDem"].Value != null)
                    {
                        if (dgvExpedition.Rows[i].Cells["dateDem"].Value.ToString() != "")
                        {
                            dateDemandée = dgvExpedition.Rows[i].Cells["dateDem"].Value.ToString();
     
                             dgvExpedition.Rows[i].Cells["columnLivreur"] = new DataGridViewComboBoxCell();
     
                             DataGridViewComboBoxCell c = (DataGridViewComboBoxCell) dgvExpedition.Rows[i].Cells["columnLivreur"] ;                        
                            c.DataSource = localhost.getLivDispo(dateDemandée);
                            c.ValueMember = "LIV_ID";
                            c.DisplayMember = "LIV_NOM";
                        }
                    }
                }

  5. #5
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 107
    Points : 56
    Points
    56
    Par défaut
    malheureusement j'ai un autre problème.
    Il récupère bien mes livreurs mais comment le positionner sur le bon livreur ["EXP_FK_LIV"]

    et si cette clé est vide quelle événement pourra me permettre d'enregistrer dans la db le livreur que l'utilisateur aura choisi dans la liste.


    J'ai mis un point d'arret sur le moment ou datedemandée est assigné et il y a un problème.

    J'ai 3 ligne dans ma grille dont les 3 dates sont 28/06; 09/05; 08/05
    Le point d'arrêt s'arrete bien 3 fois mais à la première fois la date est bien le 28/06, au second 09/05 mais au troisème passage, il récupère a nouveau 28/06

    Merci de votre aide

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2008
    Messages
    337
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 337
    Points : 456
    Points
    456
    Par défaut
    il faut que tu lies ta combo à la propriété ID_LIV de la source de donnée de ton datagrid, pour cela utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    c.DataPropertyName = "MON_CHAMP";
    Si ta clé étrangère peut être null je pense qu'en ajoutant une ligne dans la source de donné de ta combo avec et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LIV_NOM = "Aucun livreur";
    celà devrais fontionner.

    bonne continuation a+

Discussions similaires

  1. Réponses: 13
    Dernier message: 08/09/2007, 10h34
  2. comboBox objets metiers datagridview
    Par pdesoil dans le forum C#
    Réponses: 16
    Dernier message: 28/08/2007, 09h55
  3. [VS2005 MFC] ComboBox pour Windows CE
    Par SteelBox dans le forum Windows
    Réponses: 1
    Dernier message: 27/02/2007, 17h12
  4. Réponses: 10
    Dernier message: 28/08/2006, 14h58
  5. recuperer la valeur d'une combobox pour la comparer dans une requête
    Par Rukawa dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 30/06/2006, 11h22

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