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

VB.NET Discussion :

Affecter une valeur dans une cellule de DataGridView


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 25
    Par défaut Affecter une valeur dans une cellule de DataGridView
    Bonjour tous le monde,

    Je bloque sur l'affectation d'une valeur dans la cellule d'un DataGridView . Si quelqu'un pouvait me débloquer ce serait super sympa.

    J'explique le problème.

    J'ai un DataGridView qui présente des données (moyens de communication, GSM, Mail ...) venant d'une Datatable (DataGridView.DataSource = DataTable). Une fois affecté je lui ajoute une colonne permettant d'afficher les codes d'appel de ces moyens de communication.

    Au final, mon DataGridView contient donc trois colonnes dont les noms d'entête sont respectivement "idMTCom", "libMoyTele" et "codeDAppel".

    Les codes d'appels se trouve dans une autre Datatable et je souhaite les afficher dans mon DataGridView en affectant les cellules de la colonne "codeDAppel" ajoutée précédemment. Le problème, c'est que cela fonctionne pas. Remarquez que bizarrement, si je change le nom de la colonne à affecter initialement "codeDAppel" pour "libMoyTele" cela fonctionne! Bien entendu vous aurez compris que ces dans la colonne "codeDAppel" que je cherche à affecter le numéro de GSM, le mail ... et non pas dans la colonne "libMoyTele".

    je vous mets ci-dessous mes codes correspondant.

    1. Le code qui ajoute la colonne code d'appel à mon DataGridView

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     Me.dgvMoyensTelecommunication.DataSource = FBase.ds.Tables("TMoyensTelecommunication")
     If dgvMoyensTelecommunication.Columns.Count < 3 Then
           Dim c As New DataGridViewTextBoxColumn    
                c.Name = "codeDAppel"   
           Me.dgvMoyensTelecommunication.Columns.Add(c)   
     End If
    2. Le code qui devrait me permettre de modifier la valeur de la cellule correspondant à la colonne "codeDAppel" dans un ligna de mon DataGridView

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    For Each row As DataGridViewRow In dgvMoyensTelecommunication.Rows
           For Each rw As DataRow In FBase.ds.Tables("TFournisseursMTelecommunication").Rows
                If row.Cells.Item("idMTCom").Value.ToString = rw.Item("xidMTCom").ToString Then
                        row.Cells.Item("codeDAppel").Value = rw.Item("codeDAppel")
                        Exit For
                End If
           Next
    Next
    Est-il possible que ce soit parce que j'ajoute la colonne "codeDAppel" à mon DatagridView que je ne peux l'affecter ? Que faire pour arriver à mes fins ? Je bloque sur cette problématique depuis deux jours et j'avance plus dans mon projet.

    J'espère que je suis pas trop compliqué (ou trop technique) à comprendre mais si quelqu'un avait la gentillesse de m'aider ce serait super sympa .

  2. #2
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    233
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 233
    Par défaut
    Où se trouve le code 2 ?

    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
        Private Sub gv_CellFormatting(sender As Object, e As DataGridViewCellFormattingEventArgs) Handles dgvMoyensTelecommunication.CellFormatting
     
            Dim gv as DataGridView = CType(sender, DataGridView)
     
            If (gv.Columns(e.ColumnIndex).Name.Equals("codeDAppel")) Then
     
                For Each rw As DataRow In FBase.ds.Tables("TFournisseursMTelecommunication").Rows
                    If gv.Rows(e.RowIndex).Cells("idMTCom").Value.ToString = rw("xidMTCom").ToString Then
                        gv.Rows(e.RowIndex).Cells("codeDAppel").Value = rw("codeDAppel").ToString
                        Exit For
                    End If
                Next
     
            End If
        End Sub
    Grosso modo

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 25
    Par défaut
    Bonjour Casii,

    Merci de intéresser à mon problème .

    Mais pourquoi cette question ? As-tu bien regardé les deux codes (points 1 et 2) il sont tous les deux différents.

    Peux-tu m'expliquer ton code STP ?

    Merci

  4. #4
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    233
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 233
    Par défaut
    Lors du formattage de la cellule (donc pour chaque cellule), si c'est une cellule de la dernière colonne, tu remplaces la valeur (vide dans le cas présent) par celle de ta DataTable.

    Je ne suis pas sûr que ce soit recommandé, mais c'est la solution que j'ai trouvé le plus rapidement à l'époque

    Edit : J'ai édité le code, il y avait (il y en a peut-être encore ) des coquilles de copier/coller !

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 25
    Par défaut
    Ok Casii,

    Je vais essayer.

    Mais là tu mets cela dans un événement. Cet événement se déclenche quand ? au chargement de ma page ? Pour l'instant mon code 2 est appelé lors de l'ouverture de mon form. Dois-je changer l'appel de ce code via l'événement dont tu use ? cet événement sera-t-il appelé lors du chargement de mon form ?

    Mes questions sont peut-être bêtes mais j'avoue que ce problème me perturbe pas mal ... .

    Merci.

  6. #6
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    233
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 233
    Par défaut
    Il sera appelé à chaque fois que ton DataGridView sera modifié (en particulier lors de ton DtataGridView.DataSource = DataTable)

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 25
    Par défaut
    Merci Cassii ,

    Cela fonctionne parfaitement.

    Juste ... . Est-ce que je pourrais te demander de m'expliquer plus profondément ton code ? je ne veux pas abuser mais je ne le comprend que partiellement et donc ... .

    Pourquoi utiliser cet événement, a quoi sert-il exactement (je sais tu as déjà donner une réponse partielle avant, mais ... msdn est pas très clair). Pourquoi, je ne savait pas écrire dans les cellules de ma colonne "codedAppel" ?

    Excuse moi encore, pour cette demande, mais si tu as mis de suite le doigt sur mon problème, c'est que j'ai bien expliqué ce dernier.

    Je ne veux pas avoir bénéficié de tes services sans avoir compris parfaitement ton code. Ce ne serai pas très constructif.

    Si tu peux m'expliquer un peux mieux ce serai cool.

    Merci .

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/03/2014, 12h05
  2. quand je selectionne une valeur dans une liste, retourne une autre valeur
    Par nsqualli dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 29/12/2008, 14h23
  3. affecter la valeur d'une requete dans une variable (VB6)
    Par josémaria dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 02/03/2007, 14h19
  4. Réponses: 1
    Dernier message: 25/09/2006, 17h15
  5. Mettre une valeur d'une table dans une variable
    Par Raphou96 dans le forum Access
    Réponses: 5
    Dernier message: 06/02/2006, 15h19

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