Bonjour,
Je suis très énervé...
La situation est la suivante : j'ai une fenêtre. Dans cette fenêtre j'ai une listBox. Cette listBox possède une DataSource et affiche les enregistrements d'une table (TableA). Cette table contient des champs qui sont les identifiants d'élements présents dans une autre table (TableB).
A droite de cette listBox, j'ai autant de comboBox que mes champs identifiants. Chaque comboBox est alimentée par la TableB. Chaque comboBox voit sa propriété DataBinding.SelectedValue branchée sur chaque champ identifiant auquel elle correspond de la TableA.
Le fonctionnement final souhaité est le suivant : je choisi un élément de ma listBox et les combo se mettent à jour en fonction de cette sélection.
Simple, non ?
Maintenant, mon problème : quand j'enregistre l'enregistrement courant, je veux pouvoir remettre mes champs identifiants à 0. Pour ce faire, je vérifie chaque comboBox : si combo.text vaut "", alors c'est que l'utilisateur veut effacer le lien, donc je remet mon id à 0.
Sauf que ! Prenons un cas pratique sur une combo. L'élément sélectionné est "toto"(c'est-à-dire que dans ma TableB, j'ai un champ défini à "toto"). Je sélectionne cette valeur dans le champ texte de ma combo avec ma souris (souffrante vue les misères que je lui inflige en raison de mon énervement ), j'appuie sur la touche Suppr. Le texte s'efface. J'appuie sur mon bouton Enregistrer et je passe en mode pas à pas.
J'arrive sur la ligne suivante :
(Je rappelle que j'ai effacé le texte de ma combo). A cet endroit, maCombo.Text vaut toujours "toto" !!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 If maCombo.Text <> "" Then .Item(K_CHAMP) = maCombo.SelectedValue Else .Item(K_CHAMP) = 0 End If
Que dois-je faire ? Comment savoir que j'ai effacé le texte de ma combo ?? Pourquoi .text vaut encore la précédente valeur alors que je l'ai effacée ??
Aidez-moi s'il-vous-plaît...je vais me tirer une balle bientôt...
Partager