SelectedValue combobox

lunedì 15 marzo 2010 - 16.33

fabiana83 Profilo | Newbie

Ciao a tutti,
spero mi possiate aiutare. Sto imparando il vb.net ma ho un problema su una combobox. Devo visualizzare in questa combobox i dati di una tabella che contiene una colonna id e una colonna nome. Ho bisogno di salvare in una variabile nell'evento SelectedIndexChanged l'id del nome scelto nella combo.Ho visto molti esempi sul web e questo è quello che sono riuscita a fare per popolare la combo:
Dim adapter As New SqlDataAdapter
adapter.SelectCommand = New SqlCommand("SELECT id_commessa, commessa FROM TCommessa ORDER BY commessa", con)
adapter.Fill(dataset)
CommessaComboBox.DataSource = dataset.Tables(0)
CommessaComboBox.DisplayMember = "commessa"
CommessaComboBox.ValueMember = "id_commessa"
Nell'evento SelectedIndexChanged invece avevo messo:
Dim id As string
id = CommessaComboBox.SelectedValue.tostring
poi avrei convertito da stringa a integer x ottenere l'id in formato numerico
Ma id mi viene valorizzato non con l'id ma con system.data.datarowview
Sto facendo parecchia confusione credo. Potete darmi qualche indicazione?
Grazie, ciao

AntCiar Profilo | Expert

Ciao.

Non funziona perchè quando associ il datasource alla comboBox, scatena per ogni riga gli eventi selectIndexChanged e SelectedValueChanged. Per ovviare al problema fai in questo modo:

1 - dichiarati una variabile di classe di tipo booleana. (una variabile visibile in tutti i metodi della classe)
2 - Prima di riempire la combobox imposta questa variabile a true
3 - dopo aver settato tutti i parametri della combo (dataSource, DisplayMember e ValueMember) imposta questa variabile a False
4 - Nell'evento SelectIndexChange prima di leggere Combo.SelectValue fai il controllo: if variabile = false

in questo modo funziona alla grande.

ciao.

Cristian Barca

fabiana83 Profilo | Newbie

Ciao,
grazie mille per il suggerimento, ora proverò. Cercando ancora sul web hotrovato su un forum che qualcuno consigliava di mettere prima il displaymember e il ValueMember e solo dopo il DataSource.
Così facendo sembra funzionare nel senso che l'id viene valorizato nel modo corretto e funziona quindi anche la conversione a integer. Cmq ora provo a fare come dici tu, immagino sia + corretto.
Grazie ancora
Ciao
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5