Llamadas dinámicas(callbacks) dentro de un asp:Repeater

jueves, 14 de agosto de 2008

Hay ocasiones en las que deseamos presentar un listado de elementos, utilizando un control Repeater y poder por ejemplo eliminar un elemento del listado, independiente del resto a través de su identificador. El siguiente texto explica como realizar esto.

La página a de implementar la interfaz IPostBackEventHandler


public partial class MiPaginaASPX : System.Web.UI.Page, IPostBackEventHandler {


Esta interfaz nos obliga a implementar el método RaisePostBackEvent, este será el que atienda las llamadas desde el cliente; recibe un parámetro en forma de cadena de texto (en este caso el identificador del registro).


public void RaisePostBackEvent(string eventArgument){
//lógica de negocio....
DatosManager.BorrarRegistro(eventArgument);
//lógica de negocio....
}

Finalmente para generar el código javascript que llame al evento RaisePostBackEvent de la página se ha de utilizar el método GetPostBackEventReference disponible dentro del ClientScript.

public string getRemoveImage(object obj) {
ShortView r = (ShortView)obj;
string evento = Page.ClientScript.GetPostBackEventReference(this, r.Id);
string res = "<a href=\"#\" onclick=\"" + evento + "\"><img src=\"/Resources/icons/borrar.png\" border=\"0\" /></a>";
return res;
}

La llamada al método getRemoveImage se realiza desde dentro del ItemTemplate:

....
<td><%# getRemoveImage(Container.DataItem)%></td>
......

No esta demás decir que esta es solo una de las posibles soluciones.

- FIN -

0 comentarios: