DynamicPopulate

Descripción

Se trata de otro sencillo extendedor. Su funcionalidad consiste en permitir que en base a un evento (por ejemplo el click de un botón) se lea el resultado de un WebService o un método de la propia página, y éste se escriba en un control, por ejemplo un Label... obviamente sin recargar la página.

El valor que debe devolver el servicio Web o el método de la página debe ser un string en formato HTML.

Propiedades

• TargetControlID: el ID del control sobre el que se escribirá el resultado. Típicamente es un Label o un TextBox.
• ClearContentsDuringUpdate: propiedad opcional (por defecto vale true) en la que indicamos si durante la llamada al WebService o método de página el valor del control debe borrarse.
• ServicePath: Url del servicio web al que haremos la llamada. Si lo que estamos es llamando a un método de página, nos pondremos nada.
• ServiceMethod: nombre del método al que estamos llamando. Su firma debe ser de este tipo:
[WebMethod]
public string DynamicPopulateMethod(string contextKey){...}
• PopulateTriggerControlID: control desde el que haremos clic para comenzar el proceso. Típicamente es un Button o un LinkButton.
• UpdatingCssClass: cuando se ha iniciado la llamada, podemos querer demostrar al usuario que hemos iniciado el proceso. Con esta propiedad asignaremos la clase CSS que aplicaremos al control.
• CustomScript: en lugar de llamar a un método de página o WebService, podemos llamar a un método de javascript.
• ContextKey: se trata del string que se le pasará al método como parámetro, de modo que podamos tratarlo en éste y dar una respuesta personalizada.

Ejemplo

Tenemos un Button y una Label, de modo que cuando presionemos sobre el Button se llame a un método de la página que nos devuelve un número aleatorio menor que 1000.

DynamicPopulate.aspx
<input runat="server" id="Button1" type="button" value="button" />
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>

<ajaxToolkit:DynamicPopulateExtender ID="DynamicPopulateExtender1" runat="server"
ClearContentsDuringUpdate="true"
PopulateTriggerControlID="Button1"
ServiceMethod="DynamicPopulateMethod"
TargetControlID="Label1">
</ajaxToolkit:DynamicPopulateExtender>

DynamicPopulate.aspx.cs
using System.Web.Services;

[WebMethod]
public string DynamicPopulateMethod(string contextKey)
{
Random r = new Random();

return r.Next(1000).ToString();
}