visual una studio net llenar enlazar dinamico datos consulta con como .net vb.net data-binding combobox

.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ó.