FileUpload con UpdatePanel

Hola amigos, hace unos días me topé por casualidad, con uno de esos controles asp.net que son incompatibles con el updatePanel, me refiero al FileUpload. El problema era que, quería/necesitaba realizar una webpart para sharepoint, que permitiera mandar mails, con archivos adjuntos, y que corriera con ajax, para evitar postbacks innecesarios etc.

En cuanto navegué un poco, encontré algunas soluciones como la creación de iframes , creacion de triggers para forzar postbacks, etc… pero ninguno de ellos colmaba mis expectativas, así que me puse a pensar un poquiño, y encontré una salida, que no sé si será la adecuada, la mejor, o simplemente una ñapa, pero la verdad es que me solucionó la vida, con unas cuantas lineas de código.

Simplemente tenemos que sobreescribir el método render de la clase  System.Web.UI.WebControls.FileUpload, haciendo que cuando este se reenderice, se «incruste» una llamada a una función javaScript en el evento onchange del control:

public class miFileUpload : System.Web.UI.WebControls.FileUpload

public miFileUpload() {}

protected override void Render(System.Web.UI.HtmlTextWriter writer)

writer.AddAttribute(«onchange», «funcionJs()»);

writer.AddAttribute(«name», «miUpload»);

 base.Render(writer);  

}

}

De esta manera, cuando seleccionemos un archivo, tendremos acceso a la función de javaScript funcionJs(), en la que podremos acceder al archivo que hemos seleccionado:

 function funcionJs()

{

alert(document.all.miUpload.value);

 }

Y esto es todo, tal vez lo consideréis una ñapa, pero bueno, con solo unas cuantas líneas, tenéis un fileUpload rulando dentro de un updatePanel.

Un saludete

6 thoughts on “FileUpload con UpdatePanel

  1. Hola muy interesante la solución.

    Podrías postear el código completo de ejemplo. ¿Como tengo acceso a la función javascript?

    saludos

Leave a Reply to anonymous Cancel reply

Your email address will not be published. Required fields are marked *