René Pacios

/* Overflow My Brain & More */

Compartir datos entre User Controls usando ViewState

El otro día en la oficina surgió la necesidad de pasar datos desde un control de usuario a otro que se encontraban en la misma página, y preguntaron “¿Se puede utilizar el ViewState desde el control para compartir la información entre ellos?”

La respuesta es un poco ambigua, en principio no es posible compartir datos de un control a otro usando este mecanismo, ya que el ViewState de cada control trabaja dentro del contexto de este y no dentro del contexto de la página. En este artículo veremos un método para conseguirlo

Por otro lado un control de usuario, no puede representarse sin una pagina, es decir no podemos acceder a un control de usuario directamente desde el navegador, este debe estar “hospedado” en una página .aspx, teniendo en cuenta esta premisa, desde el control de usuario podremos acceder a las propiedades de la página que la alberga.

Para este ejemplo, he utilizado una clase base para las páginas de esta forma será más sencilla trabajar de forma tipada con los sitios Web dado que su modo de compilación no lo permite de forma sencilla quedando nuestro código de la siguiente forma.

Como podemos ver, hemos creado una clase base que nos va a permitir implementar comportamientos comunes para nuestras páginas, veamos como nos puede ayudar esto:

En el código anterior podemos observar que se ha implementado una propiedad pública que nos permitirá acceder directamente al ViewState de la página instanciada. Por otro lado agregaremos el siguiente código a la página principal, que nos va a permitir ver como cambia el ViewState de la página:

De acuerdo, pero no íbamos a compartir datos entre controles de usuario? Para este ejemplo implementamos el siguiente control de usuario que nos va a permitir probar nuestro ejemplo.

ejemplo user controls view state compartido

Y ahora veamos como podemos compartir datos entre los diferentes controles de usuario utilizando para ello el ViewState

He incluido un control de tipo Radio que nos permitirá seleccionar si queremos almacenar la información en el ViewState desde el control de forma tradicional o en accediendo directamente al ViewState de la página.

Para probar este ejemplo agregaremos dos controles de tipo “WebUserControl” que hemos definido anteriormente, a la página principal.

Con esto hemos visto una forma sencilla de compartir información entre dos o más controles de usuario.

Código de ejemplo: UCViewState.zip

Espero que os haya resultado de utilidad.

Nos leemos, René Pacios

Acerca de René

René Pacios es un apasionado de la tecnología, autodidacta, emprendedor, le encanta el desarrollo web, para moviles, aplicaciones, todo aquello que automatice tareas y haga que las máquinas trabajen para él. Es un gran fan de las tecnologías Microsoft, y le encanta estar a la última siempre que el tiempo se lo permite. Siempre quiso ser cantante, pero creo que en esta vida se va a quedar sólo en canta-mañanas

No hay comentarios:

Publicar un comentario