Control personalizado ASP.NET TextBoxHora

Extensión del objeto System.Web.UI.WebControl.TextBox para incluir un control de validación de expresión que verifique y valide el formato de la hora capturada

Fecha: 12/Ene/2005 (10/01/05)
Autor: Haaron Gonzalez, e-mail: [email protected],
weblog: http://weblogs.golemproject.com/hgonzalez/

 

.

 

Introducción

Después de un tiempo sin escribir por motivos de trabajo extenso, por fin hoy tengo la oportunidad de escribir un ya saben mi frase, sencillo pero espero útil articulo sobre controles de servidor personalizados, hoy escribo sobre la idea de poder validar los datos proporcionados por el usuario cuando necesitamos capturar una hora. En el control que hoy desarrollaremos veremos como extender el control System.Web.UI.WebControl.TextBox para incluir internamente otro control de tipo System.Web.UI.WebControl.RegularExpressionValidator con la idea de validar la hora con un formato HH:MM AM/PM dentro de nuestro control System.Web.UI.WebControl.TextBox.

Pero antes de continuar, si aun no has visto los artículos anteriores, aquí esta la lista:

La Solución

Para fines prácticos y de seguimiento utilizaremos la solución y proyectos creados en los artículos de esta serie mencionados anteriormente así que si no cuentas con ello empieza por ahí y cuando termines deberás contar con la siguiente estructura:

Selecciona el proyecto ControlesWeb creamos una clase de nombre: TextBoxHora y escribimos las siguientes secciones de código:

 

Este código expone una propiedad publica llamada MensajeError la cual sostiene el texto a mostrar cuando ocurra una validación de la hora no satisfactoria. Por otro lado el control req el cual es un control Regular Expression Validator encargado de realizar la validación apropiada basada en una expresión regular, esta validación de expresión es definida por expresiones regulares encontradas en este sitio: http://regexlib.com/ . Las expresiones regulares verifican texto basado en un patrón definido por una expresión. Para mas información al respecto entra a: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk/html/xsdrefregularexpression.asp

NOTA: La expresion regular utilizada es  ^((0?[1-9]|1[012])(:[0-5]\d){0,2}(\ [AP]M))$|^([01]\d|2[0-3]) y solamente valores AM, FM en capital mayuscula son permitidos.

Una vez escrito el código compilemos el proyecto y generamos nueva versión del archivo ControlesWeb.dll ubicado en el fólder Bin del proyecto ControlesWeb

En el proyecto TestControlesWeb y agrega un nuevo formulario llamado WebForm6.aspx y expande el elemento References y seleccionamos ControlesWeb damos clic derecho y lo removemos. Ahora seleccionamos y damos doble clic en el WebForm5.aspx y en la ventana Toolbox presiona botón derecho del ratón y damos clic para seleccionar la opción Add and Remove Items. Buscamos y seleccionamos el archivo ControlesWeb.dll, damos clic en el titulo Namespace de la columna y se ordenara la lista de controles apareciendo al principio nuestros tres controles de servidor personalizados.

   

A continuación vamos a arrastrar un control de tipo TextBoxHora sobre nuestro WebForm6.aspx , debido a que este nuevo control hereda del objeto  TextBox cuenta con todas las propiedades originales del control  TextBox más las nueva propiedades definidas anteriormente .

Vamos a establecer las siguientes propiedades del control MensajeError:

Ahora si tienes todo listo para ejecutar la aplicación y ver funcionando tu control personalizado TextBoxHora verifica que cuando proporciones te aparecerá un mensaje de error.

 

Conclusión

En este artículo vimos como extender la funcionalidad del control System.Web.UI.WebControl.TextBox para agregar internamente un segundo control encargado de validar el formato de la hora capturada.


ir al índice