Mostrando entradas con la etiqueta UserControls. Mostrar todas las entradas
Mostrando entradas con la etiqueta UserControls. Mostrar todas las entradas

2011/04/13

User Control y Javascript en UpdatePanel

Cuando queremos utilizar script de javascript (server side) desde un user control que esta dentro de un update panel, podemos tener el problema de que el javascript no llegue al navegador hasta que se haga el postback lo que limita su uso en llamados asincronicos (AJAX), para solucionar esto disponemos de la clase ScripManager.

Veamos un ejemplo para ver su utilización:
Generalmente para mostrar un alert utilizamos el siguiente código:


Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "key", "alert('hola');", true);


Bueno, este código no funciona en un user control que este dentro de un update panel, para que esto funcione debemos reemplazar el código por la siguiente linea, que hace uso de la clase ScriptManager:


ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "key", "alert('hola');", true);
Ahora el script funciona ok, espero que les sirva.

2010/09/05

Validacion en UserControls

Los UserControls nos permiten encapsular cierto funcionamiento de manera que pueda o no interferir con el funcionamiento global de la pagina que lo contiene.

Hay situaciones en las que deseamos que el funcionamiento sea completamente independiente, en estos casos queremos que también la validación (a través de RequiredFieldValidator, RangeValidator, ValidationSummary, etc) sea independiente.

Para estos casos necesitamos hacer uso de una propiedad que poseen los controles llamada: ValidationGroup
De esta forma lo que haremos en encapsular la validacion de un UserControl con un codigo unico para que no modifique el funcionamiento habitual de la pagina, por ejemplo, un boton de la pagina contenedora no se verá afectada por los campos requeridos de nuestro UserControl.

Una manera de asegurarnos que el codigo del grupo de validacion sea unico es agregar una propiedad interna a nuestro UserControl:

protected string UniqueValidationGroup { get { return this.ClientID + "MyValidationGroup"; } }


Y luego desde el código usarla para setiar el ValidationGroup, en cada control que lo necesite los cuales serán tipicamente los controles de validación (RequiredFieldValidator, RangeValidator, ValidationSummary, etc) asi como tambien los botones que deberian causar esas validaciones dentro de nuestro UserControl.

ValidationGroup='<%# UniqueValidationGroup %>'