none
Leer datos adicionales de un combobox

    Pregunta

  • Buenas tardes

    Tengo un combobox que lleno con una lista de prendas desde un procedimiento almacenado 

    Capa Datos

     Public Function CargarComboPrendas() As List(Of ent_prenda)
            Dim ListaPrendas As New List(Of ent_prenda)()
            Dim cnn As New SqlConnection(ConfigurationManager.ConnectionStrings("lava_cnn").ToString())
            Try
                Dim cmd As New SqlCommand("sp_lista_prendas")
                cmd.CommandType = CommandType.StoredProcedure
                cmd.Connection = cnn
                cnn.Open()
                Dim dr_prendas As SqlDataReader = cmd.ExecuteReader()
                While dr_prendas.Read()
                    Dim prenda As New ent_prenda
                    prenda.id_prenda = CInt(dr_prendas(0))
                    prenda.nom_prenda = Trim(CStr(dr_prendas(1)))
                    prenda.peso_prenda = CInt(dr_prendas(2))
                    prenda.val_marcacion = CDbl(dr_prendas(3))
                    ListaPrendas.Add(prenda)
                End While
                cnn.Dispose()
            Catch ex As Exception
                MsgBox(ex.Message,, "LAVAPOS")
            End Try
            Return ListaPrendas
        End Function

    Capa presentación

     Public Sub VerPrenda()
            Dim ListaPrendas As List(Of ent_prenda) = SelectPrenda.ListaPrendas()
            If ListaPrendas.Count > 0 Then
    
                cbox_nom_prenda.ValueMember = "id_prenda"
                cbox_nom_prenda.DisplayMember = "nom_prenda"
                cbox_nom_prenda.DataSource = ListaPrendas
                cbox_nom_prenda.AutoCompleteMode = AutoCompleteMode.Suggest
                cbox_nom_prenda.AutoCompleteSource = AutoCompleteSource.ListItems
                cbox_nom_prenda.Text = "Seleccionar una Prenda..."
            End If
        End Sub

    Con esta proceso selecciono el numero de la prenda y lo asigno a un textbox

    Private Sub cbox_nom_prenda_SelectionChangeCommitted(sender As Object, e As EventArgs) Handles cbox_nom_prenda.SelectionChangeCommitted
            txt_cod_prenda.Text = CStr(cbox_nom_prenda.SelectedValue)
        End Sub

    pero como selecciono los otros valores de la prenda seleccionada que están cargados en el combobox peso_prenda, val_prenda para poder asignarlos a otros texbox

    Gracias


    Freddy Aragon


    viernes, 27 de enero de 2017 22:27

Respuestas

  • Freddy Aragon,

    ¿Tu capa de datos es una biblioteca de clases? De ser así, ¿cómo haces uso de una ventana modal de mensaje (Clase System.Windows.Form.MessageBox)?, te recomiendo que quites el controlador de errores Try-Catch y lo escribas en la capa de presentación.

    El objeto 'cboc_nom_prenda' sólo contiene los valores de las columnas que defines en las propiedades 'ValueMember' y 'DisplayMember', si deseas obtener el valor de las demás columnas puedes volver a llamar a la función CargarComboPrendas() para obtener la referencia de la fila según el elemento seleccionado (para el caso la función debería tener un nombre de uso general, algo como ObtenerPrendas()).

    Try
    	txt_cod_prenda.Text = CStr(cbox_nom_prenda.SelectedValue)
    
    	Dim Prenda = SelectPrenda.ListaPrendas().
    		FirstOrDefault(Function(x) x.id_prenda = txt_cod_prenda.Text)
    
    	If Prenda IsNot Nothing Then
    		txt_peso_prenda.Text = Prenda.peso_prenda
    		'Otras propiedades
    	End If
    Catch ex As Exception
    	MessageBox.Show(ex.Message)
    End Try


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Marcado como respuesta Freddy Aragon sábado, 28 de enero de 2017 15:45
    viernes, 27 de enero de 2017 23:11