Join en-US

Repotenciando el control CustomerValidator mediante el uso de ASP.NET AJAX

published 8/13/2008 11:46:23 PM by Manuel Fernando

Los controles de validación son muy importantes porque evitan que los usuarios envíen datos no validos a las tablas de las bases de datos o procesos que se realicen con estos. Uno de los controles más importantes y usados es el del campo requerido RequiredFieldValidator, el control de validación personalizado CustomValidator es un control muy importante porque nos permite validar datos de forma personalidad como verificación en una base de datos entre otras cosas. El principal inconveniente con este control es que se debe realizar un postback al servidor para realizar la validación, aunque el control permite llamar a un script desde el lado del cliente para realizar una validación no es una completa solución alterna debido a que desde el script no se puede hacer llamadas a una base de datos.

En el siguiente fragmento de codigo se encuentra el el javascript para realizar la operación de validacion, este llama al metodo del fragmento anterior.

Para el CustomValidator llame a la funcion javascript este se debe colocar le nombre de la funcion en la porpiedad ClientValidationFunction y tanto como el button que hace el postback como cualquie control de validacion deben estar dentro del mismo grupo de validacion mediante la propiedad ValidationGroup.

Con la ayuda de asp.net Ajax se puede dar una solución a este inconveniente mediante el uso de llamados a métodos de página. Para este ejemplo he creado un fragmento de código desde el archivo de código de la pagina aspx o behind code que es el siguiente, es necesario que la propiedad EnablePageMethods del scriptmanager este establecida como true.


Implementación del método web en C#

Implementación del método web en VB

Cabe recordar que desde este fragmento de codigo se puede llamar a un procedimiento almacenado que compare el dato enviando contra una tabla y devolver el resultado que debe ser boleano(true/false) para el control CustomValidator y el metodo de pagina retorna true si el dato es valido de lo contrario retornara false que mostrar al usuario el mensaje de error.


Test del demo

Podemos observar la hora del sistema al momento de terminar el carge de pagina



Se ingreso un dato que no cuemple con la condición en el método de pagina que retorna false y muestra el mensaje de error y no se realizo ningun postback que se puede verificar al ver que la hora del sistema esta igual al momento del carge de pagina.



Al ingresar el dato que es valido en el método de pagina, este retorna true y permite la realización del postback y al terminar el carge de pagina la hora del sistema se actualiza.


Comments


re: Repotenciando el control CustomerValidator mediante el uso de ASP.NET AJAX
Hola Charly, que pena contestarte hasta hoy pero he estado algo ocupado.

Bueno args.IsValid = username lo asigno de esta manera ya que args.IsValid tendra el valor por referencia de username, recuerda que la invocacion del PageMethods se ejecutan asincronicamente. por esta razón es que lo hago asi. Por otra parte remueve cualquier contenido de las propiedades Text, ErrorMesssage del control CustomError ya que aunque se ejecute la validacion en muchas ocasiones el control no muestra los mensajes. Por esta razón utilizo una etiqueta HTML tipo a.

Procura colocar el TextBox que recibe esta validacion al principio del formulario de solicitud. ya que los controles de validacion validan al momento de que el control pierde el foco de entrada.

De esta manera al momento que el usuario le da clic al siguiente TextBox inicia la validacion personalizada. si colocas al final este TextBox tienes que realizar dos veces clic en el button que hace el registro por ejemplo. porque este comportamiento. Esto se comporta asi ya en el primer clic se pierde el foco y se valida como el button esta dentro del grupo de validacion no genera ninguna invocacion. y en el segundo clic ya si se genera el proceso porque ya validaron todos controles de validación.

cualquier cosa si quieres envia el contenido html que tienes y miramos a ver que puede estar pasando.

saludos,

MANUEL FERNANDO

Add a comment

Title  

Comments  


Sign in for add you comments


Frameworkla.net compatible con Internet Explorer 8
History Favorites