FileUpload con UpdatePanel

Published 2/2/2009 17:42 | Isaac Fernandez

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

Archivado en: ,
Comparte este post:

Comentarios

# grandun said on February 2, 2009 5:50 PM:

Me ha servido de mucho, llevaba un tiempo ya pegandome con ello.

Muchas gracias

# a said on September 28, 2009 5:44 PM:

puedes poner todo el codigo?

# Arturo said on October 19, 2009 11:21 PM:

Hola muy interesante la solución.

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

saludos

# rnace said on November 2, 2009 4:59 PM:

el *** amo, si señor

# Kraft said on November 6, 2009 6:15 PM:

como incluyo este render a mi proyecto ??

# Kraft said on November 6, 2009 6:26 PM:

ya pude n.n