none
LLenar Combobox con lista de objetos

    Pregunta

  • Hola Buen día

    De antemano les agradezco de su apoyo.

    Tengo el siguiente problema.

    Cree una clase que toma los datos de una tabla de una base de datos, estos datos se guardan en una lista. Esta es la función:

    Public Function ListarDeptos() As List(Of EntDepto)
            Dim DR As SqlDataReader = Nothing
            Dim lista As List(Of EntDepto) = Nothing
            Try
                conectar()
                cmd = New SqlCommand("listaDeptos")
                cmd.CommandType = CommandType.StoredProcedure
                cmd.Connection = cn
                DR = cmd.ExecuteReader
                lista = New List(Of EntDepto)
                While DR.Read
                    Dim c As EntDepto = New EntDepto
                    c.giddepto = Convert.ToInt32(DR("iddepto").ToString)
                    c.gnombredepto = DR("nombredepto").ToString
                    lista.Add(c)
                End While
            Catch ex As Exception
                lista = Nothing
            Finally
                DR.Close()
                desconectar()
            End Try
            Return lista
        End Function

    La función toma el nombre del departamento y ID del mismo; lo que deseo hacer es mostrar el nombre de los departamento en un combobox; esto lo quiero para cuando ingrese un empleado seleccione el departamento; pero en la tabla donde se va a guardar solo le guardara el ID del departamento.

    Realice este código, el cual me muestra el nombre de los departamentos, pero al momento de guardar un nuevo usuario en el ID me pone "0 (cero)".

     Dim listdepto As List(Of EntDepto)
     Dim ltdo As New NegDepto

     Public Sub inicializar()
            listdepto = ltdo.ListarDeptos
            For Each DPTO As EntDepto In listdepto
                CBDeptos.Items.Add(DPTO.gnombredepto)
                'CBDeptos.ValueMember = DPTO.giddepto
            Next
        End Sub

    Intente lo que esta en negritas pero no me funciono, les agradezco de su apoyo, saludos cordiales.!!!

    martes, 27 de septiembre de 2016 17:27

Respuestas

  • Hola MVK23,

    No necesitas realizar un ForEach para agregar los valores al ComboBox, solo tienes que asignarlos al DataSource.

    Algo como :

     'Almaceno el resultado
     Dim departments As List(Of EntDepto) = ListarDeptos()
    
     CBDeptos.DataSource = departments
     CBDeptos.ValueMember = "giddepto"
     CBDeptos.DisplayMember = "gnombredepto"

    Dónde el ValueMember es el valor que tomará cuando se seleccione algún elemento, y el DisplayMember es lo que mostrará en el comboBox.

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    • Marcado como respuesta MVK23 martes, 27 de septiembre de 2016 17:57
    martes, 27 de septiembre de 2016 17:33

Todas las respuestas

  • Hola MVK23,

    No necesitas realizar un ForEach para agregar los valores al ComboBox, solo tienes que asignarlos al DataSource.

    Algo como :

     'Almaceno el resultado
     Dim departments As List(Of EntDepto) = ListarDeptos()
    
     CBDeptos.DataSource = departments
     CBDeptos.ValueMember = "giddepto"
     CBDeptos.DisplayMember = "gnombredepto"

    Dónde el ValueMember es el valor que tomará cuando se seleccione algún elemento, y el DisplayMember es lo que mostrará en el comboBox.

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    • Marcado como respuesta MVK23 martes, 27 de septiembre de 2016 17:57
    martes, 27 de septiembre de 2016 17:33
  • Hola MVK23,

    No necesitas realizar un ForEach para agregar los valores al ComboBox, solo tienes que asignarlos al DataSource.

    Algo como :

     'Almaceno el resultado
     Dim departments As List(Of EntDepto) = ListarDeptos()
    
     CBDeptos.DataSource = departments
     CBDeptos.ValueMember = "giddepto"
     CBDeptos.DisplayMember = "gnombredepto"

    Dónde el ValueMember es el valor que tomará cuando se seleccione algún elemento, y el DisplayMember es lo que mostrará en el comboBox.

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    Gracias Joel C. Naupan

    me funciono la corrección que me distes; Gracias nuevamente Saludos cordiales.!!!

    martes, 27 de septiembre de 2016 18:12