.net - studio - llenar un combobox con una consulta sql
Rellenar ComboBox desde la consulta de la base de datos (1)
Veo muchas de las respuestas a preguntas similares donde la gente dice que para obtener el valor del artículo cargado en el cuadro combinado, debe usar
combobox1.displayMamer =""
combobox1.valuemember=""
combobox1.datasource=""
Pero esto no funciona ...
aquí es lo que tengo ....
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Using con As New SqlConnection(sConnection)
con.Open()
Using com As New SqlCommand("Select Code1, Code2 from tblTable6 where fldname =''Things''", con)
Using rdr = com.ExecuteReader
If rdr.HasRows Then
Do While rdr.Read = True
ComboBox1.Items.Add(rdr.GetString(0))
''''''''missing something here
Loop
con.Close()
End If
End Using
End Using
End Using
End Sub
Estoy seleccionando Código1 y Código2 de la Tabla, quiero poder mostrar el código1 y, cuando estoy seleccionado, quiero poder tener el valor de Código2, pero con displayMember y ValueMember no veo ningún resultado.
EDITAR: Aquí está todo mi código:
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Using con As New SqlConnection(sConnection)
Using com As New SqlCommand("Select Label, Code from Table.....", con)
con.Open()
Dim dt As New DataTable()
Dim rows = dt.Load(com.ExecuteReader)
ComboBox1.DataSource = dt
ComboBox1.DisplayMember = "Code"
ComboBox1.ValueMember = "Label"
con.Close()
End Using
End Using
End Sub
Dim rows = dt.Load (com.ExecuteReader) --- esta línea se subraya
ERROR dice: Expresión no produce valor
EDIT2:
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Using con As New SqlConnection(sConnection)
con.Open()
Using com As New SqlCommand("Select Label, Code from tblData where fldname =''M''", con)
Dim dt As New DataTable()
ComboBox1.DataSource = dt
ComboBox1.DisplayMember = "Code"
ComboBox1.ValueMember = "Label"
con.Close()
End Using
End Using
End Sub
Ahora aparece otro error que dice: No se puede vincular al nuevo miembro de valor. Esto sucede en combobox1.valuemember = "Etiqueta"
En lugar de poblar la colección de elementos, puede vincular una DataTable
al control para que se utilice como Datasource
. Luego, puede decirle qué elemento mostrar y qué valor le enviará cuando haya una selección:
Using con As New SqlConnection(sConnection)
Using com As New SqlCommand("Select Id, Name FROM ....", con)
con.Open()
Dim dt As New DataTable()
dt.Load(com.ExecuteReader)
cbox1.Datasource = dt
cbox.DisplayMember = "Name"
cbox.ValueMember = "Id"
End Using
End Using
"Nombre" e "Id" serían nombres de columnas de la tabla de la base de datos. El evento con el que probablemente desee trabajar en este caso sería SelectedValueChanged
y SelectedValue
contendría el ID relacionado con el elemento seleccionado. Esto se devolverá como Object
por lo que es posible que tengas que devolverlo a lo que sea.
También puede enlazar a List(Of T)
colecciones de la List(Of T)
de la misma manera. En ese caso, SelectedItem
podría ser el objeto completo. Por ejemplo, al usar una List(of Employee)
, SelectedItem
sería el objeto para el Empleado que el usuario seleccionó.