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 :

[VB.NET 2008] Comportement inattendu d'un Combobox lié à une source de données (Binding)


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 9
    Par défaut [VB.NET 2008] Comportement inattendu d'un Combobox lié à une source de données (Binding)
    Bonjour à tous,

    Voilà, j'utilise Visual Studio 2008 Express pour créer une petite application de facturation dans laquelle j'ai des contrôles de type combobox liés à une source de données de type Microsoft Access 2007 qui se comportent de manière assez étonnante. Je précise que j'ai fait le binding entre les contrôles et la BDD en utilisant uniquement l'interface graphique proposée dans Visual studio (donc par les menus et par glisser-déposer) sans ecrire une seule ligne de code dans l'éditeur.
    Et donc, mon problème est le suivant : la liste des items disponible dans mon combobox change en cours d'execution de l'application. Je m'explique : en mode débogage, lorsque je séléctionne un item dans liste d'un combobox, celui-ci s'affice dans la zone de texte du combobox (jusqu'ici rien de surprenant). Mais lorsque je souhaite selectionner un nouvel item dans la meme liste du même combobox, la liste des items dispo à changée avec disparition d'un item et apparition d'un item en doublon. Comme le montrent les captures d'ecran ci-jointes :

    avant :

    Nom : Avant.jpg
Affichages : 79
Taille : 7,9 Ko

    et après :

    Nom : Après.jpg
Affichages : 86
Taille : 6,7 Ko

    Concernant la liaison du combobox avec les données, la fenêtre propriétés contient les valeurs suivantes :

    DataSource = ControleBindingSource
    DisplayMember = Nom du champs "articles" dans la BDD
    ValueMember = Nom du champs "ID" dans la BDD

    Malgrès de la patience et de multiples tentatives, je n'ai pas réussi à detreminer l'origine du problème. De toutes façon j'ai l'intention de reprendre la conception de l'appli depuis le début en remplçant la base access par une BDD SQL Server et surtout en tapant le code à la main, je trouve que c'est plus lisible. Mais dans un but purement pédagogique j'aimerais bien comprendre mon erreur.

    Merci d'avance pour vos réponses.

    Cordialement.

  2. #2
    Membre extrêmement actif
    Inscrit en
    Avril 2008
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 573
    Par défaut combobox versatile
    bonjour,
    quand tu as place le combobox sur la surface il y une fenetre de liaison qui apparait avec et que tu est tente d'utilise:
    -source donnees
    -display membre
    -value member
    -et oui selected value qui la doc le dit ,l'intellisense le repete il est egal à value member.

    Vu la presence de cette fenetre on serait tente de mettre la meme valeur que value membre ce qui bon mais on peut etre tente de mettre autre chose ce qui n'est pas correct.
    en mettant cette valeur à un autre champ on a un comportement erratique d'un combobox et d'un datagridview.
    c'est la piste
    bon code...

  3. #3
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 9
    Par défaut
    Bonjour Mabrouki,

    D'abord, merci pour ta réponse.
    Ensuite, concernant la "selected value" dont tu parle je l'avais laissée sans valeur affectée (aucun) car à chaque fois que je lui affectait une valeur, que se soit Display member ou value member le comportement du combobox était encore plus génant. J'ai donc réessayé ce que tu propose pour être sûr et voilà le message d'erreur que j'obtien au cours du debogage lorsque je séléctionne un des items du combobox :

    Nom : message.jpg
Affichages : 65
Taille : 37,7 Ko

    comme si le programme essayer de rajouter un enregistrement dans la base de données (alors que je n'ai rien programmé dans ce sens) et qu'il découvrait qu'il existait déjà un enregistrement ayant la même identifiant unique ou clé primaire, raison pour laquelle il lève une exception)

    Bizarre non ?

  4. #4
    Membre extrêmement actif
    Inscrit en
    Avril 2008
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 573
    Par défaut bindingsource et combobox
    bonjour ,
    le seul remede pour le dataset et le bindingsource dans des cas pareils,c'est celui que tu as deja mentionne c'est d'avoir le controle sur tout ca (parce le designer fait beaucoup de chose à notre insu) par programme ,seulement c'est fastidieux ,il faut creer ses outils data objets une bonne fois pour toute.
    bon code et bonne soiree...

  5. #5
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 9
    Par défaut
    Merci

Discussions similaires

  1. [ComboBox]Pointer deux comboBox sur une table de données
    Par mordrhim dans le forum Windows Forms
    Réponses: 6
    Dernier message: 24/11/2009, 08h44
  2. Meilleur moyen de populer une Combobox depuis une base de données
    Par Miles Raymond dans le forum Windows Forms
    Réponses: 4
    Dernier message: 03/07/2008, 10h34
  3. Réponses: 7
    Dernier message: 28/06/2008, 19h44
  4. Réponses: 12
    Dernier message: 22/04/2008, 12h55
  5. Remplir un combobox avec une base de donnée
    Par tomenbois dans le forum C#
    Réponses: 12
    Dernier message: 12/12/2007, 20h37

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