none
problema con ListBox Anidado a Combobox RRS feed

  • Pregunta

  • hola, verán estoy haciendo lo siguiente cargo un combobox(Curso) al inicial el form. luego al seleccionar un item tomo el valuemember de este lo convierto y cargo otro combobox(Alumno) lo mismo con este a diferencia que el segundo combobox cargar un ListBox(Lbox_grupofamiliar) bien hasta ahí bien.

    ahora intentando usar el evento selectedindexchange del ListBox intentando usar el mismo método de conversión que usé para los combobox's, tomando el selectedValue, O me da un error de cadena de conversión o me dice que la cadena de conversión de datarowview en integer no es valida.

    mi código.

        Private Sub cmb_Alumno_GF_SelectionChangeCommitted(sender As Object, e As EventArgs) Handles cmb_Alumno_GF.SelectionChangeCommitted
            Try
                Dim Dt As DataTable
                Dim Da As New SqlDataAdapter
                Dim Cmd As New SqlCommand
                Dim value As Object = cmb_Alumno_GF.SelectedValue
    
                If (value IsNot Nothing) Then
                    ' Convertimos el valor obtenido al tipo de datos
                    ' adecuado, en éste caso, a un valor String.
                    '
                    alum_apoderado_filtro = Convert.ToString(value)
                End If
    
                Me.txt_buscar_id_responsable.Text = CStr(alum_apoderado_filtro.ToString)
                With Cmd
                    .CommandType = CommandType.Text
                    .CommandText = "SELECT m.idMatricula, a.Apellidos +', '+ a.Nombres +' - '+ c.Curso as AlumnoDescrip, a.idAlumno from Matricula as m inner join Alumno as a on a.idAlumno = m.idAlumno inner join Cursos as c on m.IdCurso = c.idCurso where a.Dniapoderado=@DNIAPODERADO"
                    .Connection = conn
                    .Parameters.AddWithValue("@DNIAPODERADO", CInt(alum_apoderado_filtro.ToString))
                End With
                Da.SelectCommand = Cmd
                Dt = New DataTable
                Da.Fill(Dt)
                With Me.Lbox_grupoFamiliar
                    .DataSource = Dt
                    .ValueMember = "idMatricula"
                    .DisplayMember = "AlumnoDescrip"
                End With
            Catch ex As Exception
                MessageBox.Show(ex.Message.ToString, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
                End Try
        End Sub
    
    
        ' **************
        Private idalum_GF As String
        Private Sub Lbox_grupoFamiliar_SelectedIndexChanged(sender As Object, e As EventArgs) Handles Lbox_grupoFamiliar.SelectedIndexChanged
            'DGV_Cuotas.Columns.RemoveAt(0)
            Try
                Dim value As Object = Lbox_grupoFamiliar.SelectedValue
    
                If (value IsNot Nothing) Then
                    ' Convertimos el valor obtenido al tipo de dato
                    ' adecuado, en éste caso, a un valor String.
                    '
                    idalum_GF = Convert.ToString(value)
                End If
    
                Dim conn = New SqlConnection(ConfigurationManager.ConnectionStrings("conexion").ConnectionString)
    
                Dim ds As New DataSet
                Dim dt As New DataTable
                Dim Da As New SqlDataAdapter
                Dim Cmd As New SqlCommand
    
                With Cmd
                    .CommandType = CommandType.Text
                    .CommandText = "Select CASE WHEN cpc.Estado = 0 THEN 'No abonado' WHEN cpc.Estado = 1 THEN 'Abonado' END AS TipoEstado, cpc.FechaVencimiento, cpc.Monto, cpc.idMatricula, a.Apellidos +', '+ a.Nombres as NOMBRECOMPLETO, a.Dniapoderado, c.Curso, cpc.idCuota, cpc.Cuota, cpc.Periodo FROM CuotasPorCobrar as cpc" & _
                                                       " inner join Alumno as a on a.idAlumno = cpc.idMatricula" & _
                                                       " inner join Cursos as c on c.idCurso = cpc.idCurso" & _
                                                       " WHERE cpc.idMatricula=@idMatri order by cpc.FechaVencimiento asc"
                    .Connection = conn
    
                    Cmd.Parameters.AddWithValue("@idMatri", CInt(idalum_GF.ToString))
                End With
    
                Da.SelectCommand = Cmd
                dt = New DataTable
                Da.Fill(dt)
    
    
                With DGV_Cuotas
                    .DataSource = dt
                    For Each row As DataGridViewRow In Me.DGV_Cuotas.Rows
                        If row.Cells("TipoEstado").Value = "No abonado" Then
                            row.Cells("ColCheckbox").ReadOnly = False
                            row.Cells("TipoEstado").Style.BackColor = Color.Crimson
                            Dim valuestring As String = Convert.ToString(row.Cells("FechaVencimiento").Value)
                            Dim fechavencimiento As Date = CDate(valuestring.ToString)
                            'DGV_Cuotas.CurrentRow.Cells(7).Value
                            Dim fechaActual As Date
                            Dim bln As Boolean = DateTime.TryParse(Date.Now, fechaActual)
    
                            If (Not (bln)) Then
                                MessageBox.Show("La conversión no es correcta.")
                                Return
                            End If
    
                            If (fechavencimiento > fechaActual) Then
                            Else
                                row.Cells("FechaVencimiento").Style.BackColor = Color.Orange
                                Dim montosuma As Decimal = Convert.ToString(row.Cells("Monto").Value)
                                Dim interes As Decimal = CDec("10.00")
                                Dim sumainterest As Decimal
                                sumainterest = CStr(montosuma) + (interes)
                                row.Cells("Monto").Value = Convert.ToDecimal(sumainterest).ToString("N2")
                            End If
    
                        ElseIf row.Cells("TipoEstado").Value = "Abonado" Then
                            row.Cells("ColCheckbox").ReadOnly = True
                            row.Cells("TipoEstado").Style.BackColor = Color.LightSeaGreen
    
                        End If
                    Next
                    '***************************************
                    '.Columns("ColCheckbox").ReadOnly = True
                    .Columns("TipoEstado").ReadOnly = True
                    .Columns("idMatricula").ReadOnly = True
                    .Columns("NOMBRECOMPLETO").ReadOnly = True
                    .Columns("Curso").ReadOnly = True
                    .Columns("idCuota").ReadOnly = True
                    .Columns("Cuota").ReadOnly = True
                    .Columns("Periodo").ReadOnly = True
                    .Columns("FechaVencimiento").ReadOnly = True
                    .Columns("Monto").ReadOnly = True
    
    
                End With
    
            Catch ex As Exception
                MessageBox.Show(ex.Message.ToString, "error", MessageBoxButtons.OK, MessageBoxIcon.Error)
            End Try
        End Sub

    bueno eso es todo un saludo y abrazos

    • Cambiado Enrique M. Montejo martes, 17 de marzo de 2015 7:16 Pregunta relacionada con controles de Windows Forms.
    miércoles, 11 de marzo de 2015 1:54

Respuestas

  • Bueno siento haber dejado el hilo muerto.

    Al final he Usado un Combobox ya desplegado para mostrar los datos. usando el evento SelectionChangeCommitted

    un abrazo.

    viernes, 13 de marzo de 2015 22:19