Fran Otero

Programación C#, ASP.NET,SqlServer, Mobile y electrónica.

FileUpload dentro de UpdatePanel

Sabido es que ciertos controles no funcionan correctamente dentro de un UpdatePanel. Es el caso de los Treeview, menú, gridview o detailsView entre otros. Algunos de estos no funcionan bajo determinadas circunstancias, o simplemente quedan totalmente invalidados. A este último grupo pertenece el control FileUpload, que nos  permite subir archivos al servidor.

Buscando por ahí, se encuentran varias soluciones, (destacaría la de Isaac Fernández en este mismo site), la mayoría enfocadas a la situación sencilla de que el control fileUpload esté situado directamente dentro del update panel. En este caso basta con agregar a la lista de triggers del UpdatePanel un nuevo PostBackTrigger con el ControlId apuntando al botón de subir archivo de nuestro FileUpload.

El problema de esta solución viene cuando la arquitectura se complica y tenemos, por ejemplo, el fileUpload dentro de un control de usuario propio, que a su vez será utilizado en páginas con varias MasterPage anidadas y el UpdateManager se encuentra en la primera de dichas MasterPages (suena rebuscado así contado, pero no estoy inventando nada :-)) Está claro que no podemos referirnos directamente desde el ASCX al UpdateManager (de forma sencilla, se entiende) ni viceversa. En este caso la solución sería tan simple como crear el PostBackTrigger referido a nuestro botón desde código, para lo cual necesitamos obtener el ScriptManager que se está utilizando en la página actual. El siguiente código muestra cómo hacerlo:

  

    protected void Page_Load(object sender, EventArgs e)

    {

        ScriptManager scripManager = ScriptManager.GetCurrent(this.Page);

        scripManager.RegisterPostBackControl(lnkNuevaImagen);

    }

 

 

Asunto resuelto, nos cargamos la funcionalidad asíncrona para este botón, pero aseguramos que funciona con sólo incluir dos líneas de código fácilmente entendibles.

Espero que a alguien más le sirva!

Posted: 7/9/2009 18:25 por Fran Otero Otero | con 5 comment(s)
Archivado en:
Comparte este post:

Comentarios

Fran Otero Otero ha opinado:

Pues aquí va un ejemplo muy básico de lo que se comenta en el artículo, aunque no sé si esta es la forma correcta de compartir archivos:

Ejemplo

# September 9, 2009 9:51 AM

ddddd ha opinado:

El contenido del fichero es ilegible.

# September 9, 2009 3:39 PM

Fran Otero Otero ha opinado:

Hay un error con el archivo, pero puede descomprimirse, el archivo "raro" que hay dentro es realmente el zip que yo quería subir. Basta con ponerle extensión .zip y se puede descomprimir todo su contenido.

De todas formas intentaré arreglarlo :-(

# September 10, 2009 11:48 AM

alejo ha opinado:

solo quiero que un boton dentro de un update panel al pulsarlo me envie a otra pagina aspx con otro contenido como lo hago?????

# July 6, 2010 12:11 AM

Alejandra Hernandez ha opinado:

Muchas gracias!. Me sirvio.

# November 11, 2010 12:13 AM