Evento en un Datagrid

02/09/2005 - 15:56 por Mikes | Informe spam
Hola a todos, tengo un datagrid y quiero que al insertar una línea nueva y se
salga de la columna 3 o se cambie de celda se lance un evento para poder
realizar validaciones y otras operaciones. Gracias de antemano por su ayuda.
 

Leer las respuestas

#1 Carlos Gómez
02/09/2005 - 19:26 | Informe spam
Mikes wrote:

Hola a todos, tengo un datagrid y quiero que al insertar una línea nueva y
se salga de la columna 3 o se cambie de celda se lance un evento para
poder realizar validaciones y otras operaciones. Gracias de antemano por
su ayuda.



Esto me lo baje hace tiempo de la ayuda de Microsoft. No recuerdo
exactamente donde lo encontré.

Existen dos formas de validar los datos introducidos para el control
DataGrid de formularios Windows Forms. Si el usuario intenta introducir un
valor cuyo tipo de datos no es aceptable para la celda, por ejemplo, una
cadena en un entero, el nuevo valor no válido se reemplaza con el valor
anterior. Esta clase de validación de los datos introducidos se realiza
automáticamente y no se puede personalizar.


La otra forma de validar los datos introducidos se puede utilizar para
rechazar todos los datos que no sean aceptables, por ejemplo, un valor cero
en un campo cuyo valor debe ser mayor o igual que uno, o una cadena
incorrecta. Para ello, en el conjunto de datos se escribe un controlador de
eventos para el evento DataTable.ColumnChanging o DataTable.RowChanging. En
el ejemplo siguiente, se utiliza el evento ColumnChanging porque el valor
que no es aceptable no se permite concretamente en la columna "Product". Se
podría utilizar el evento RowChanging para comprobar si el valor de una
columna "End Date" es posterior al valor de la columna "Start Date" de la
misma fila.


Para validar los datos introducidos por el usuario

1. Escriba código que controle el evento ColumnChanging para la tabla
correspondiente. Cuando se detecte una entrada incorrecta, llame al método
SetColumnError del objeto DataRow.

' Visual Basic
Private Sub Customers_ColumnChanging(ByVal sender As Object, _
ByVal e As System.Data.DataColumnChangeEventArgs)
   ' Only check for errors in the Product column
   If (e.Column.ColumnName.Equals("Product")) Then
      ' Do not allow "Automobile" as a product.
      If CType(e.ProposedValue, String) = "Automobile" Then
         Dim badValue As Object = e.ProposedValue
         e.ProposedValue = "Bad Data"
         e.Row.RowError = "The Product column contians an error"
         e.Row.SetColumnError(e.Column, "Product cannot be " & _
         CType(badValue, String))
      End If
   End If
End Sub

Conecte el controlador de eventos al evento.

2. Incluya el siguiente código en el evento Load del formulario o en su
constructor.

' Visual Basic
' Assumes the grid is bound to a dataset called customersDataSet1
' with a table called Customers.
' Put this code in the form's Load event or its constructor.
AddHandler customersDataSet1.Tables("Customers").ColumnChanging, AddressOf
Customers_ColumnChanging

Preguntas similares