none
Seleccionar una fila en datagridview en el evento _CellValueChanged RRS feed

  • Pregunta

  • Hola amigos, tengo una grilla en la cual al ingresar el Nro del personal, compruebo que no haya ingresado ya anteriormente ese Nro de personal con el evento _CellValueChanged, pasa que en caso que encuentre uno igual, este deberia seleccionarme la fila en donde aparece por primera vez ese Nro de personal, pero no me sale, y espero que puedan ayudarme a resolver este inconveniente
    Private Sub dgv_CellValueChanged(sender As Object, e As DataGridViewCellEventArgs) Handles dgv.CellValueChanged
            If e.RowIndex >= 0 And e.ColumnIndex < 3 Then
                Dim x As Int32
                Dim row As capDataSet.cap_datospersonalesRow
                If Not IsNumeric(dgv.Rows(e.RowIndex).Cells("id_personal").Value) Then
    
                    dgv.Rows(e.RowIndex).Cells("id_personal").Value = ""
                    dgv.Rows(e.RowIndex).Cells("nombre_personal").Value = ""
                    dgv.Rows(e.RowIndex).Cells("cua").Value = ""
                    
                    Exit Sub
    
    
                ElseIf Not dgv.Rows(e.RowIndex).Cells("id_personal").Value < 10 Then
    
                    row = CapDataSet.cap_datospersonales.FindByidpersonal(dgv.Rows(e.RowIndex).Cells("id_personal").Value)
    
                    If Not IsNothing(row) Then
                        If arrayPersonal.Contains(CInt(dgv.Rows(e.RowIndex).Cells("id_personal").Value)) = False Then
    
                            If row.IsunidadasigNull Or row.IsnombrecortoNull Then
                                dgv.Rows(e.RowIndex).Cells("peligrosidad").Value = 0
                                dgv.Rows(e.RowIndex).Cells("ayuda_alimenticia").Value = 0
                                dgv.Rows(e.RowIndex).Cells("viatico_doble").Value = 0
                                dgv.Rows(e.RowIndex).Cells("nombre_personal").Value = ""
                                dgv.Rows(e.RowIndex).Cells("cua").Value = ""
                                Exit Sub
                            End If
    
                            dgv.Rows(e.RowIndex).Cells("nombre_personal").Value = row.nombrecorto
                            dgv.Rows(e.RowIndex).Cells("cua").Value = row.unidadasig
                            If arrayPersonal.Contains(CInt(dgv.Rows(e.RowIndex).Cells("id_personal").Value)) = False Then
                                arrayPersonal.Add(CInt(dgv.Rows(e.RowIndex).Cells("id_personal").Value))
                            End If
                        Else
                            MsgBox("Ya se registró al mismo funcionario dentro de la planilla. Favor verificar la planilla", MsgBoxStyle.OkOnly, Title:="Atención Registro duplicado")
                            Dim personal As Integer = CInt(dgv.Rows(e.RowIndex).Cells("id_personal").Value)
                            x = arrayPersonal.IndexOf(personal)
                            'dgv.Rows(e.RowIndex).Selected = True
                            dgv.Rows(x).Selected = True
                           'Aqui deberia de seleccionar la fila que deseo
                            Exit Sub
                        End If
    
                    Else
                        dgv.Rows(e.RowIndex).Cells("peligrosidad").Value = 0
                        dgv.Rows(e.RowIndex).Cells("ayuda_alimenticia").Value = 0
                        dgv.Rows(e.RowIndex).Cells("viatico_doble").Value = 0
                        dgv.Rows(e.RowIndex).Cells("nombre_personal").Value = ""
                        dgv.Rows(e.RowIndex).Cells("cua").Value = ""
                        Exit Sub
    
                    End If
                Else
    
                    dgv.Rows(e.RowIndex).Cells("nombre_personal").Value = ""
                    dgv.Rows(e.RowIndex).Cells("cua").Value = ""
                    Exit Sub
    
                End If
            Else
                If e.RowIndex >= 0 And e.ColumnIndex >= 3 Then
    
                    If Not IsNumeric(dgv.Rows(e.RowIndex).Cells("ayuda_alimenticia").Value) Then
    
                        dgv.Rows(e.RowIndex).Cells("ayuda_alimenticia").Value = 0
    
                    ElseIf ((dgv.Rows(e.RowIndex).Cells("ayuda_alimenticia").Value < 0) Or (dgv.CurrentRow.Cells("ayuda_alimenticia").Value > 45)) Then
    
                        dgv.Rows(e.RowIndex).Cells("ayuda_alimenticia").Value = 0
    
                    End If
    
                    If Not IsNumeric(dgv.Rows(e.RowIndex).Cells("peligrosidad").Value) Then
    
                        dgv.Rows(e.RowIndex).Cells("peligrosidad").Value = 0
    
    
                    ElseIf ((dgv.Rows(e.RowIndex).Cells("peligrosidad").Value < 0) Or (dgv.Rows(e.RowIndex).Cells("peligrosidad").Value > 30)) Then
    
                        dgv.Rows(e.RowIndex).Cells("peligrosidad").Value = 0
    
                    End If
    
                    If Not IsNumeric(dgv.Rows(e.RowIndex).Cells("viatico_doble").Value) Then
    
                        dgv.Rows(e.RowIndex).Cells("viatico_doble").Value = 0
    
                    ElseIf ((dgv.Rows(e.RowIndex).Cells("viatico_doble").Value < 0) Or (dgv.Rows(e.RowIndex).Cells("viatico_doble").Value > 45)) Then
    
                        dgv.Rows(e.RowIndex).Cells("viatico_doble").Value = 0
    
                    End If
    
                End If
    
            End If
        End Sub
    gracias
    • Cambiado Enrique M. Montejo lunes, 21 de abril de 2014 7:19 Pregunta sobre controles de Windows Forms.
    martes, 15 de abril de 2014 15:32