Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

préselection à l'ajout (combobox + dataset)

6 réponses
Avatar
OSI Mik
Bonjour,
Je voudrais préselectionner une valeur dans un combobox lors d'une ajout. Ce
combobox affiche une colonne d'une vue DB et renvoi une autre colonne de
cette vue.
Pour cela je voudrais savoir :

Comment sélectionner un item dans une combobox appartir de la valeur
retourné(databindings/selectedvalue) et non pas de l'index ou de la valeur
affiché (displaymember) ?

Où mettre le code de sélection sachant que l'ajout se fait par un
ToolStripButton d'un BindingNavigator (auto-généré par drag and drop depuis
le panneau Source de données) ?

Je crains de pas être très claire, désolé.
Merci de votre aide.
OsiMik

6 réponses

Avatar
Gilles TOURREAU
Le Thu, 06 Dec 2007 16:31:15 +0100, OSI Mik a écrit:

Bonjour,
Je voudrais préselectionner une valeur dans un combobox lors d'une
ajout. Ce
combobox affiche une colonne d'une vue DB et renvoi une autre colonne de
cette vue.



Si j'ai bien compris par exemple vous avez une table :

ID NOM
1664 TOURREAU
1665 TOURREAU
33 TOTO
...

Vous affichez dans la combo la colonne Nom, mais vous utilisez l'ID.

Pour cela je voudrais savoir :

Comment sélectionner un item dans une combobox appartir de la valeur
retourné(databindings/selectedvalue) et non pas de l'index ou de la
valeur
affiché (displaymember) ?



Si DisplayMember = "NOM"

alors définissez ValueMember = "ID"


Où mettre le code de sélection sachant que l'ajout se fait par un
ToolStripButton d'un BindingNavigator (auto-généré par drag and drop
depuis
le panneau Source de données) ?



Pour sélectionner "TOTO", il suffit de faire :

MaComboBox.SelectedValue = 1664.

La sélection est automatique...
Pour savoir qui est sélectionné :

Dim id as Integer
id = CType(MaComboBox.SelectedValue, Integer)


Je crains de pas être très claire, désolé.



Oui... Mais si vous donnez des exemples çà nous aide !

Merci de votre aide.
OsiMik





Cordialement

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
Avatar
OSI Mik
Merci, pour la sélection ca fonctionne.

Par contre je n'arrive pas à la positionner juste après l'ajout d'un
élément.
Je m'explique :
Ma combobox est lier à un BindingSource. J'ai un BindingNavigator autogénéré
lier aussi à ce BindingSource.
Si je mets mon code de présélection sur l'évènement onclick du bouton new
item de mon BindingNavigator, la sélection se fait avant le creation de
l'élément donc mon combobox apparais vide. Même chose si je le fais sur
l'évènement AddingNew du BindingSource.

Dans quel évènement de quel objet dois-je mettre ma sélection pour qu'elle
s'applique juste après la création de mon nouvelle élément ?

OsiMik

"Gilles TOURREAU" a écrit dans le message de news:

Le Thu, 06 Dec 2007 16:31:15 +0100, OSI Mik a écrit:

Bonjour,
Je voudrais préselectionner une valeur dans un combobox lors d'une
ajout. Ce
combobox affiche une colonne d'une vue DB et renvoi une autre colonne de
cette vue.



Si j'ai bien compris par exemple vous avez une table :

ID NOM
1664 TOURREAU
1665 TOURREAU
33 TOTO
...

Vous affichez dans la combo la colonne Nom, mais vous utilisez l'ID.

Pour cela je voudrais savoir :

Comment sélectionner un item dans une combobox appartir de la valeur
retourné(databindings/selectedvalue) et non pas de l'index ou de la
valeur
affiché (displaymember) ?



Si DisplayMember = "NOM"

alors définissez ValueMember = "ID"


Où mettre le code de sélection sachant que l'ajout se fait par un
ToolStripButton d'un BindingNavigator (auto-généré par drag and drop
depuis
le panneau Source de données) ?



Pour sélectionner "TOTO", il suffit de faire :

MaComboBox.SelectedValue = 1664.

La sélection est automatique...
Pour savoir qui est sélectionné :

Dim id as Integer
id = CType(MaComboBox.SelectedValue, Integer)


Je crains de pas être très claire, désolé.



Oui... Mais si vous donnez des exemples çà nous aide !

Merci de votre aide.
OsiMik





Cordialement

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr


Avatar
Gilles TOURREAU
Le Fri, 07 Dec 2007 10:13:04 +0100, OSI Mik a écrit:

Merci, pour la sélection ca fonctionne.

Par contre je n'arrive pas à la positionner juste après l'ajout d'un
élément.
Je m'explique :
Ma combobox est lier à un BindingSource. J'ai un BindingNavigator
autogénéré
lier aussi à ce BindingSource.
Si je mets mon code de présélection sur l'évènement onclick du bouton new
item de mon BindingNavigator, la sélection se fait avant le creation de
l'élément donc mon combobox apparais vide. Même chose si je le fais sur
l'évènement AddingNew du BindingSource.

Dans quel évènement de quel objet dois-je mettre ma sélection pour
qu'elle
s'applique juste après la création de mon nouvelle élément ?

OsiMik




Il ne faut pas relier votre BindingNavigator au même BindingSource que
votre ComboBox...

Si vous ajoutez un élément dans votre BindingSource la ComboBox sera
automatiquement pointé vers le dernier élément, si vous modifier l'élément
positionné dans la ComboBox, ceci modifiera la position de l'élément en
cours d'édition du BindingNavigator (et donc l'élément en cours d'ajout)...

Cordialement

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
Avatar
OSI Mik
Désolé pour le temps de réponse j'ai été très pris.
Pour reprendre mon problème, voici le fonctionnement que je souhaite obtenir
:
J'ai une table article composée de plusieurs champs dont un qui est le type
d'article(afficher dans une combobox).
Quand je change d'article (avec le BindingNavigator) le champs type
d'article affiche la valeur dans la base.
Quand j'ajoute une nouvelle article(clique sur le bouton ajouter mais pas
encore sauvegarder), le champs type article doit être remplie avec la valeur
venant d'un autre textbox.
Je dois donc mettre un évènement ou je remplis la valeur du combobox après
le clique sur le bouton ajouter, mais surtout après que le champs ne soit
mis à blanc par l'action d'ajout.

Je ne sais pas quel évènement utiliser.

OsiMik

"Gilles TOURREAU" a écrit dans le message de news:

Le Fri, 07 Dec 2007 10:13:04 +0100, OSI Mik a écrit:

Merci, pour la sélection ca fonctionne.

Par contre je n'arrive pas à la positionner juste après l'ajout d'un
élément.
Je m'explique :
Ma combobox est lier à un BindingSource. J'ai un BindingNavigator
autogénéré
lier aussi à ce BindingSource.
Si je mets mon code de présélection sur l'évènement onclick du bouton new
item de mon BindingNavigator, la sélection se fait avant le creation de
l'élément donc mon combobox apparais vide. Même chose si je le fais sur
l'évènement AddingNew du BindingSource.

Dans quel évènement de quel objet dois-je mettre ma sélection pour
qu'elle
s'applique juste après la création de mon nouvelle élément ?

OsiMik




Il ne faut pas relier votre BindingNavigator au même BindingSource que
votre ComboBox...

Si vous ajoutez un élément dans votre BindingSource la ComboBox sera
automatiquement pointé vers le dernier élément, si vous modifier l'élément
positionné dans la ComboBox, ceci modifiera la position de l'élément en
cours d'édition du BindingNavigator (et donc l'élément en cours
d'ajout)...

Cordialement

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr


Avatar
Gilles TOURREAU
Le Thu, 03 Jan 2008 15:13:06 +0100, OSI Mik a écrit:

Désolé pour le temps de réponse j'ai été très pris.
Pour reprendre mon problème, voici le fonctionnement que je souhaite
obtenir
:
J'ai une table article composée de plusieurs champs dont un qui est le
type
d'article(afficher dans une combobox).
Quand je change d'article (avec le BindingNavigator) le champs type
d'article affiche la valeur dans la base.
Quand j'ajoute une nouvelle article(clique sur le bouton ajouter mais pas
encore sauvegarder), le champs type article doit être remplie avec la
valeur
venant d'un autre textbox.
Je dois donc mettre un évènement ou je remplis la valeur du combobox
après
le clique sur le bouton ajouter, mais surtout après que le champs ne soit
mis à blanc par l'action d'ajout.

Je ne sais pas quel évènement utiliser.

OsiMik




Bonjour et bonne année !

Le plus simple que je vous conseille c'est de traiter l'événement :

BindingSource.CurrentChanged

Et de sauvegarder la valeur du textbox dans une variable privée
"valeurPrécédente".
Et lors de l'ajout, vous initialisez votre ComboBox avec la valeur de
cette variable.

Cordialement

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
Avatar
OSI Mik
Bonjour et bonne à année avec du retard.
Merci pour le coup de main, je vais essayer de mettre ca en place.
Cordialement,
OsiMik

"Gilles TOURREAU" a écrit dans le message de news:

Le Thu, 03 Jan 2008 15:13:06 +0100, OSI Mik a écrit:

Désolé pour le temps de réponse j'ai été très pris.
Pour reprendre mon problème, voici le fonctionnement que je souhaite
obtenir
:
J'ai une table article composée de plusieurs champs dont un qui est le
type
d'article(afficher dans une combobox).
Quand je change d'article (avec le BindingNavigator) le champs type
d'article affiche la valeur dans la base.
Quand j'ajoute une nouvelle article(clique sur le bouton ajouter mais pas
encore sauvegarder), le champs type article doit être remplie avec la
valeur
venant d'un autre textbox.
Je dois donc mettre un évènement ou je remplis la valeur du combobox
après
le clique sur le bouton ajouter, mais surtout après que le champs ne soit
mis à blanc par l'action d'ajout.

Je ne sais pas quel évènement utiliser.

OsiMik




Bonjour et bonne année !

Le plus simple que je vous conseille c'est de traiter l'événement :

BindingSource.CurrentChanged

Et de sauvegarder la valeur du textbox dans une variable privée
"valeurPrécédente".
Et lors de l'ajout, vous initialisez votre ComboBox avec la valeur de
cette variable.

Cordialement

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr