Pour remplir une Combobox, j'ai utilisé la sequence suivante :
Private Structure strPiece
Public Nom As String
Public Numero As String
End Structure
Private Sub Init_Mesures_cbPieces()
Dim xi As Integer
Dim xPiece As strPiece
xPiece = Nothing ' pour etre sur qu'il n'y a rien dans xPiece
Me.cbMesurePiece.BeginUpdate() ' accelerer le traitement
Me.cbMesurePiece.Items.Clear() ' vider la combobox
For xi = 0 To xTablePiece.Rows.Count - 1 ' pour toutes les lignes de
la table
xPiece.Nom = xTablePiece.Rows(xi).Item("LibPiece") ' le libelle
de la piece
xPiece.Numero = xTablePiece.Rows(xi).Item("NumPiece") ' le
numero de la piece
Me.cbMesurePiece.Items.Add(xPiece) ' la structure est rangée
dans la CB
Next
Me.cbMesurePiece.EndUpdate() ' mise a jour du control a l'ecran
end sub
Ca marche bien et sur un clic, je recupere bien l'element selectionné, MAIS
...
la liste associée lors du deroulement de la Combobox ne présente pas
les valeurs devant etre affichées (le contenu de la colonne LibPiece de la
table xTablePiece). A la place j'ai un truc du genre
"NomduProjet"."NomdelaClasse"+"NomdelaStructure", identique pour toutes les
lignes et je ne sais pas comment positionner la propriété DisplayMember (je
sens que c'est la que reside le pb ?) de la combobox pour voir les valeurs de
la table.
Merci a tous.
JFG
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Millox Frédéric
Bonjour,
Essaye ce bout de code :
With cbMesurePiece .DataSource = xTablePiece .DisplayMember = "LibPiece" .ValueMember = "NumPiece" .Text = ..... Texte affiché en 1er à l'init graphique de l'objet End With
A+
-- fmillox
"JFGerard" a écrit :
Pour remplir une Combobox, j'ai utilisé la sequence suivante : Private Structure strPiece Public Nom As String Public Numero As String End Structure
Private Sub Init_Mesures_cbPieces()
Dim xi As Integer Dim xPiece As strPiece
xPiece = Nothing ' pour etre sur qu'il n'y a rien dans xPiece Me.cbMesurePiece.BeginUpdate() ' accelerer le traitement Me.cbMesurePiece.Items.Clear() ' vider la combobox For xi = 0 To xTablePiece.Rows.Count - 1 ' pour toutes les lignes de la table xPiece.Nom = xTablePiece.Rows(xi).Item("LibPiece") ' le libelle de la piece xPiece.Numero = xTablePiece.Rows(xi).Item("NumPiece") ' le numero de la piece Me.cbMesurePiece.Items.Add(xPiece) ' la structure est rangée dans la CB Next Me.cbMesurePiece.EndUpdate() ' mise a jour du control a l'ecran end sub
Ca marche bien et sur un clic, je recupere bien l'element selectionné, MAIS ... la liste associée lors du deroulement de la Combobox ne présente pas les valeurs devant etre affichées (le contenu de la colonne LibPiece de la table xTablePiece). A la place j'ai un truc du genre "NomduProjet"."NomdelaClasse"+"NomdelaStructure", identique pour toutes les lignes et je ne sais pas comment positionner la propriété DisplayMember (je sens que c'est la que reside le pb ?) de la combobox pour voir les valeurs de la table. Merci a tous. JFG
Bonjour,
Essaye ce bout de code :
With cbMesurePiece
.DataSource = xTablePiece
.DisplayMember = "LibPiece"
.ValueMember = "NumPiece"
.Text = ..... Texte affiché en 1er à l'init graphique de l'objet
End With
A+
--
fmillox
"JFGerard" a écrit :
Pour remplir une Combobox, j'ai utilisé la sequence suivante :
Private Structure strPiece
Public Nom As String
Public Numero As String
End Structure
Private Sub Init_Mesures_cbPieces()
Dim xi As Integer
Dim xPiece As strPiece
xPiece = Nothing ' pour etre sur qu'il n'y a rien dans xPiece
Me.cbMesurePiece.BeginUpdate() ' accelerer le traitement
Me.cbMesurePiece.Items.Clear() ' vider la combobox
For xi = 0 To xTablePiece.Rows.Count - 1 ' pour toutes les lignes de
la table
xPiece.Nom = xTablePiece.Rows(xi).Item("LibPiece") ' le libelle
de la piece
xPiece.Numero = xTablePiece.Rows(xi).Item("NumPiece") ' le
numero de la piece
Me.cbMesurePiece.Items.Add(xPiece) ' la structure est rangée
dans la CB
Next
Me.cbMesurePiece.EndUpdate() ' mise a jour du control a l'ecran
end sub
Ca marche bien et sur un clic, je recupere bien l'element selectionné, MAIS
...
la liste associée lors du deroulement de la Combobox ne présente pas
les valeurs devant etre affichées (le contenu de la colonne LibPiece de la
table xTablePiece). A la place j'ai un truc du genre
"NomduProjet"."NomdelaClasse"+"NomdelaStructure", identique pour toutes les
lignes et je ne sais pas comment positionner la propriété DisplayMember (je
sens que c'est la que reside le pb ?) de la combobox pour voir les valeurs de
la table.
Merci a tous.
JFG
With cbMesurePiece .DataSource = xTablePiece .DisplayMember = "LibPiece" .ValueMember = "NumPiece" .Text = ..... Texte affiché en 1er à l'init graphique de l'objet End With
A+
-- fmillox
"JFGerard" a écrit :
Pour remplir une Combobox, j'ai utilisé la sequence suivante : Private Structure strPiece Public Nom As String Public Numero As String End Structure
Private Sub Init_Mesures_cbPieces()
Dim xi As Integer Dim xPiece As strPiece
xPiece = Nothing ' pour etre sur qu'il n'y a rien dans xPiece Me.cbMesurePiece.BeginUpdate() ' accelerer le traitement Me.cbMesurePiece.Items.Clear() ' vider la combobox For xi = 0 To xTablePiece.Rows.Count - 1 ' pour toutes les lignes de la table xPiece.Nom = xTablePiece.Rows(xi).Item("LibPiece") ' le libelle de la piece xPiece.Numero = xTablePiece.Rows(xi).Item("NumPiece") ' le numero de la piece Me.cbMesurePiece.Items.Add(xPiece) ' la structure est rangée dans la CB Next Me.cbMesurePiece.EndUpdate() ' mise a jour du control a l'ecran end sub
Ca marche bien et sur un clic, je recupere bien l'element selectionné, MAIS ... la liste associée lors du deroulement de la Combobox ne présente pas les valeurs devant etre affichées (le contenu de la colonne LibPiece de la table xTablePiece). A la place j'ai un truc du genre "NomduProjet"."NomdelaClasse"+"NomdelaStructure", identique pour toutes les lignes et je ne sais pas comment positionner la propriété DisplayMember (je sens que c'est la que reside le pb ?) de la combobox pour voir les valeurs de la table. Merci a tous. JFG
JFGerard
Bonjour Merci de cette reponse efficace. ca marche. J'avais deja essayé cela mais je m'etais heurté alors a la phase "utilisation de la CB". En effet, pendant la phase d'initialisation de la CB, l'evenement SelectedItemChanged est monté deux fois par le constructeur (je suppose que c'est lui qui joue !!). A la premiere invocation, comme la CB n'est pas encore remplie, la propriete "SelectedValue" renvoie le type de l'element ayant rempli la CB (au cas particulier System.data.datarowview) et comme je ne m'attendais pas a cette info, une "invalid cast exception" plante l'application. A la deuxieme, on recupere - pendant la phase de remplissage - la premiere valeur de la liste. Apres, lors d'une ouverture de la CB, je recupere bien la "selected value", le "text", par contre le "selected item" est toujours de type "system.data.datarowview" et j'ai encore quelques difficultés a le recuperer completement (erreur "invalid cast exception" !!).
j'ai donc encore ces deux questions : comportement a l'initialisation gestion du "selected item" peut-etre que les DevDays du 28/03 me donneront l'occasion de poser la question a un gourou de la grande famille !!! ( .... si tu as des reponses ?) Mais, du moins, ca commence a marcher .... Merci et a+
"Millox Frédéric" a écrit :
Essaye ce bout de code :
With cbMesurePiece .DataSource = xTablePiece .DisplayMember = "LibPiece" .ValueMember = "NumPiece" .Text = ..... Texte affiché en 1er à l'init graphique de l'objet End With
A+
-- fmillox
Bonjour
Merci de cette reponse efficace. ca marche.
J'avais deja essayé cela mais je m'etais heurté alors a la phase
"utilisation de la CB".
En effet, pendant la phase d'initialisation de la CB, l'evenement
SelectedItemChanged est monté deux fois par le constructeur (je suppose que
c'est lui qui joue !!).
A la premiere invocation, comme la CB n'est pas encore remplie, la propriete
"SelectedValue" renvoie le type de l'element ayant rempli la CB (au cas
particulier System.data.datarowview) et comme je ne m'attendais pas a cette
info, une "invalid cast exception" plante l'application.
A la deuxieme, on recupere - pendant la phase de remplissage - la premiere
valeur de la liste.
Apres, lors d'une ouverture de la CB, je recupere bien la "selected value",
le "text", par contre le "selected item" est toujours de type
"system.data.datarowview" et j'ai encore quelques difficultés a le recuperer
completement (erreur "invalid cast exception" !!).
j'ai donc encore ces deux questions :
comportement a l'initialisation
gestion du "selected item"
peut-etre que les DevDays du 28/03 me donneront l'occasion de poser la
question a un gourou de la grande famille !!! ( .... si tu as des reponses ?)
Mais, du moins, ca commence a marcher ....
Merci et a+
"Millox Frédéric" a écrit :
Essaye ce bout de code :
With cbMesurePiece
.DataSource = xTablePiece
.DisplayMember = "LibPiece"
.ValueMember = "NumPiece"
.Text = ..... Texte affiché en 1er à l'init graphique de l'objet
End With
Bonjour Merci de cette reponse efficace. ca marche. J'avais deja essayé cela mais je m'etais heurté alors a la phase "utilisation de la CB". En effet, pendant la phase d'initialisation de la CB, l'evenement SelectedItemChanged est monté deux fois par le constructeur (je suppose que c'est lui qui joue !!). A la premiere invocation, comme la CB n'est pas encore remplie, la propriete "SelectedValue" renvoie le type de l'element ayant rempli la CB (au cas particulier System.data.datarowview) et comme je ne m'attendais pas a cette info, une "invalid cast exception" plante l'application. A la deuxieme, on recupere - pendant la phase de remplissage - la premiere valeur de la liste. Apres, lors d'une ouverture de la CB, je recupere bien la "selected value", le "text", par contre le "selected item" est toujours de type "system.data.datarowview" et j'ai encore quelques difficultés a le recuperer completement (erreur "invalid cast exception" !!).
j'ai donc encore ces deux questions : comportement a l'initialisation gestion du "selected item" peut-etre que les DevDays du 28/03 me donneront l'occasion de poser la question a un gourou de la grande famille !!! ( .... si tu as des reponses ?) Mais, du moins, ca commence a marcher .... Merci et a+
"Millox Frédéric" a écrit :
Essaye ce bout de code :
With cbMesurePiece .DataSource = xTablePiece .DisplayMember = "LibPiece" .ValueMember = "NumPiece" .Text = ..... Texte affiché en 1er à l'init graphique de l'objet End With