J'utilise un code similaire à ceci pour remplir une zone de liste déroulante avec des éléments d'une base de données. L'affichage fonctionne bien, mais quand j'essaie d'obtenir le combobox.SelectedValue
, il renvoie un DataRowView, où j'ai besoin d'un entier. Évidemment c'est parce que je n'ai pas casted la valeur à un nombre entier, mais la fonction, CInt(cboPosition.SelectedValue)
lève une exception InvalidCastException. Y a-t-il un moyen pour que le type de ValueMember soit Integer?Comment obtenir une valeur entière à partir d'une zone de liste déroulante en utilisant un DataTable comme source de données
Dim cn As New SqlConnection(CreditDisputesLogConn)
Dim cmd As New SqlCommand("CustomersLookup", cn)
Dim da As New SqlDataAdapter(cmd)
cmd.CommandType = CommandType.StoredProcedure
Try
Dim dt As New DataTable
da.Fill(dt)
uxCustomerName.DataSource = dt
uxCustomerName.DisplayMember = "CustomerName"
uxCustomerName.ValueMember = "CustomerID"
uxCustomerName.SelectedIndex = -1
Catch ex As Exception
MessageBox.Show(ex.Message)
Finally
cn.Close()
cn.Dispose()
End Try
Comme je l'ai dit, le code ci-dessus est seulement similaire. La procédure stockée que j'utilise _does_ renvoie les champs ID et Description; cette partie fonctionne bien. Le problème est que le type de SelectedValue est 'DataRowView' –
J'ai édité la réponse pour montrer le code réel pour la recherche que j'utilise. –
Juste pour être sûr: Vous * utilisez * SelectedValue' et non 'SelectedItem', n'est-ce pas? J'ai mis à jour ma réponse. – Heinzi