Asignar trigger a un UpdatePanel en tiempo de ejecución (C#, ASP)

Supongamos que tenemos el siguiente escenario:
<asp:GridView ID="GridView1" runat="server">
 <Columns>
  <asp:TemplateField HeaderText="Botón">
   <ItemTemplate>
    <asp:ImageButton ID="ImageButton2" runat="server" />
   </ItemTemplate>

El botón ImageButton2 es inaccesible directamente dado que está contenido en un GridView, entonces no lo podríamos añadir como trigger para un UpdatePanel en el código como normalmente se haría:

<asp:AsyncPostBackTrigger ControlID="ImageButton2" EventName="Click" />
Entonces, lo que haremos será añadirlo dinámicamente en tiempo de ejecución.

 Nos valemos del evento OnLoad del control. Para que al momento de cargarse, se asigne como trigger al UpdatePanel en cuestión.

De tal manera el código quedaría así:

ASP:
<asp:GridView ID="GridView1" runat="server">
 <Columns>
  <asp:TemplateField HeaderText="Botón">
   <ItemTemplate>
    <asp:ImageButton ID="ImageButton2" runat="server" OnLoad="ImageButton2_Load" />
   </ItemTemplate>
Y C#:
protected void ImageButton2_Load(object sender, EventArgs e)
{
    ImageButton boton = (ImageButton)sender;
    UpdatePanel1.Triggers.Add(new AsyncPostBackTrigger { ControlID = boton.UniqueID, EventName = "Click" });
}

¡Listo! ahora nuestro ImageButton2 ha quedado registrado como trigger asíncrono para actualizar el UpdatePanel1

¡Saludos!
@fferegrino :)

No comments:

Post a Comment

¡Hey, gracias por tu comentario! No seas anónimo, inicia sesión para que te responda más fácilmente.