Unidad 53. DataGrid (VI)





53.8. Edición.

La edición quedará condicionada a los tipos de objetos que hayamos añadido al DataGrid.

Podemos editar solo cuando hay un textbox.

 

Private Sub DataGrid_CellValidating(ByVal sender As Object, _

          ByVal e As System.Windows.Forms.DataGridViewCellValidatingEventArgs) _

      Handles DataGrid.CellValidating

 

  If DataGrid.Rows(e.RowIndex).IsNewRow Then Return

 

  Select Case e.ColumnIndex

    Case 0

      If String.IsNullOrEmpty(e.FormattedValue.ToString()) Then

        MsgBox("No puede quedar en blanco.", MsgBoxStyle.Information, NomProgram)

        e.Cancel = True

      Else

        If e.FormattedValue.ToString().Length > 3 Then

         MsgBox("El código excede de la longitud.", MsgBoxStyle.Information, NomProgram)

         e.Cancel = True

       End If

     End If

   Case 1

     If String.IsNullOrEmpty(e.FormattedValue.ToString()) Then

       MsgBox("No puede quedar en blanco.", MsgBoxStyle.Information, NomProgram)

       e.Cancel = True

     End If

  End Select

End Sub

 

Private Sub DataGrid_CellValidated(ByVal sender As Object, _

                 ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) _

      Handles DataGrid.CellValidated

 

  Dim Valor As String

  Select Case e.ColumnIndex

    Case 0

      Valor = DataGrid.CurrentCell.Value.ToString

      If Valor <> "" Then

        Valor = Format(CInt(Valor), "000")

      End If

      DataGrid.CurrentCell.Value = Valor

    Case 2

      Valor = DataGrid.CurrentCell.Value.ToString

      If Valor <> "" Then

        Valor = Format(CInt(Valor), "##0.00")

      End If

      DataGrid.CurrentCell.Value = Valor

  End Select

End Sub

 

También podemos optar por esta otra solución.

 

 

Private Sub Datagrid_EditingControlShowing(ByVal sender As Object, _

     ByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) _

     Handles Datagrid.EditingControlShowing

  ' Evitamos la columna del combo

  Select Case DataGrid.CurrentCell.ColumnIndex

    Case 0

    Case Else

      Dim CeldasGrid As TextBox = CType(e.Control, TextBox)

      ' Agregar el controlador de eventos para el KeyPress

      AddHandler CeldasGrid.KeyPress, AddressOf Validar_Celdas

      AddHandler CeldasGrid.Validating, AddressOf Validando

  End Select

End Sub

 

El primer paso es en este evento ejecutar el código que vemos.

De esa forma conseguimos

 

 Dim CeldasGrid As TextBox = CType(e.Control, TextBox)

 

Crear un objeto del tipo TextBox, o lo que es lo mismo nos lo llevamos al terreno que nos interesa.

De esa forma podemos usar los siguientes procedimientos, que ya tendremos escritos.

 

Private Sub Validando(ByVal sender As Object, _

                      ByVal e As System.ComponentModel.CancelEventArgs)

  Validacion(2, CType(sender, TextBox), e.Cancel)

End Sub

 

Private Sub Validar_Celdas(ByVal sender As Object, _

                           ByVal e As System.Windows.Forms.KeyPressEventArgs)

  ' Capturamos el índice de la columna

  Dim Columna As Integer = DataGrid.CurrentCell.ColumnIndex

  TratarTeclado(Columna, e)

End Sub

 

De tal forma que lo que podemos es manejar la celda del DataGrid, como un textbox más.

 

  ' Agregar el controlador de eventos para el KeyPress

  AddHandler CeldasGrid.KeyPress, AddressOf Validar_Celdas

  AddHandler CeldasGrid.Validating, AddressOf Validando

 

Ya que aquí asociamos el evento keypress normal que usamos siempre para el control del teclado.

 

AddHandler CeldasGrid.KeyPress, AddressOf Validar_Celdas

 

Private Sub Validar_Celdas

 

 

Y en este usamos creamos el evento validating para la llamada al procedimiento de validación que usemos siempre.

 

AddHandler CeldasGrid.Validating, AddressOf Validando

 

Private Sub Validando

 

Octubre-2010
Pág. 53.6

Atrás  Inicio  Adelante






Página inicial  Cursos Informática Gratuitos

Síguenos en:   Facebook       Sobre aulaClic            Política de Cookies