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 :

DataGridView Erreur de ComboBox


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Avatar de Gurdil le nain
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2009
    Messages
    468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2009
    Messages : 468
    Par défaut DataGridView Erreur de ComboBox
    Bonjour à tous,

    J'ai un soucis sur une datagridView contenant une DataGridViewComboBoxColumn. Je charge ces ComboBox à l'aide d'une enum.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim cbDG As DataGridViewComboBoxColumn = CType(DataGridView1.Columns(0), DataGridViewComboBoxColumn)
    cbDG.DataSource = System.Enum.GetValues(GetType(Enums.XMLFields))
    La première ligne fonctionne très bien, ma combo est bien remplie, mais dès que je sélectionne une item (et donc créé une nouvelle ligne), j'ai une belle popup qui apparait avec un
    System.ArgumentException : DataGridViewComboBoxCell value is not valid.
    Ensuite, si je clique sur ma nouvelle combo, je la voit correctement remplie

    J'ai cherché un peu sur le net, mais je n'ai rien trouvé de satisfaisant. J'en ai bien vu qui désactivaient l'exception mais je trouve ça un peu laid.

    Si quelqu'un à une autre solution ?
    Merci
    Gurdil

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Quelle est la source de données du DataGridView (s'il y en a une) ?
    As-tu défini les propriétés DisplayMember/ValueMember de la DataGridViewComboBoxColumn ?
    De mon côté je n'arrive pas à reproduire le problème...

  3. #3
    Membre émérite
    Avatar de Gurdil le nain
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2009
    Messages
    468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2009
    Messages : 468
    Par défaut
    Il n'y a pas de source de données pour la DataGridView, seulement pour la première colonne.

    Non je n'ai pas définit de value/displayMember, il me semble avoir lu sur msdn qu'ils n'étaient pas utiles pour les enums.

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par Gurdil le nain Voir le message
    Il n'y a pas de source de données pour la DataGridView, seulement pour la première colonne.
    OK, donc ça va être un peu plus compliqué pour initialiser la valeur... je regarde s'il y a un évènement qui va bien et je te dis

    Citation Envoyé par Gurdil le nain Voir le message
    Non je n'ai pas définit de value/displayMember, il me semble avoir lu sur msdn qu'ils n'étaient pas utiles pour les enums.
    Non effectivement, mais si tu en avais mis ça aurait pu poser un problème

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    OK, en fait c'est encore plus simple... Il faut définir le ValueType de la colonne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cbDG.ValueType = GetType(Enums.XMLFields)

  6. #6
    Membre émérite
    Avatar de Gurdil le nain
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2009
    Messages
    468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2009
    Messages : 468
    Par défaut


    La loose, j'avais à peu près essayer toutes les propriétés sauf celle là.

    Merci bien en tout cas.

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Ah ok, je crois deviner... Dans ton enum, tu as mis des valeurs explicites ? S'il n'y a pas de valeur de l'enum qui correspond à 0, ça cause ce problème, parce que la valeur par défaut n'est pas une valeur définie par l'enum, et n'est donc pas dans la combo

    Il faut que tu gères l'évènement AddingNew de la BindingSource pour initialiser toi-même l'objet ajouté (e.NewObject)

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

Discussions similaires

  1. DataGridView et colonne combobox
    Par Papy214 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 12/11/2009, 11h35
  2. DatagridView et champs ComboBox
    Par amirad dans le forum Windows Forms
    Réponses: 0
    Dernier message: 26/03/2009, 15h26
  3. Click sur cellule de Datagridview : Erreur
    Par Phreak0x dans le forum Windows Forms
    Réponses: 3
    Dernier message: 03/11/2008, 09h42
  4. Réponses: 4
    Dernier message: 09/05/2007, 23h39
  5. Erreur sur combobox
    Par mad0308 dans le forum Delphi
    Réponses: 3
    Dernier message: 24/07/2006, 17h47

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