jueves, 25 de marzo de 2010

fileUpload no funciona con updatepanel ASPX.NET

A quien no le ah pasado que mientras desarrollamos una aplicación web en ASPX.NET nos toca, subir un archivo, imagen, etc... existen muchas maneras de hacerlo pero la forma base es utilizando un fileupload que viene en las herramientas de Visual Studio Team System en app WEB.

Hasta aqui no tenemos mayor problema, el codigo para mover la imagen, archivo se basa en una libreria llamada System.IO la cual copia el file en un directorio en el servidor o en el caso antes de ser publicado, dentro de una carpeta en nuestro proyecto.

el problema inicia cuando usamos una master page con un script manager, es decir que nuestras aplicaciones se ejecutan con scripts, y ya en forma mas profesional usamos los updatepanels para evitar que se actualice cada vez nuestra página web cuando realizamos cambios como seleccionar otros valores de un dropdownlist, en fin.

en la captura podemos ver el codigo como se implementa la utilización de un fileupload dentro del update panel

ahora que sucede seleccionamos un archivo, le damos cargar y nos devuelve un error diciendo "Instancia hace referencia a un objeto no establecido" u otros mensajes dependiendiendo del tipo de método de subida estemos usando.

La respuesta a este problema es que los UPDATEPANEL's no permiten que el fileupload cargue el archivo, ya que para realizar esta acción se necesita hacer un refrescamiento de la página para copiar el archivo en el servidor.

Navegando por internet me enconte con muchas soluciones pero la mayoria no servia, pues enconte algo muy util y que funciona 100% en mi aplicación.

Lo que debeis hacer es colocar una exepción dentro de un trigger con el nombre del boton que esta ejecutando el proceso de subida, en donde obligamos al updatepanel a realizar un refrescamiento solo en la zona de upload sin afectar a los demás registros que esten antes o después del FILEUPLOAD.

El ejemplo implementado lo podes mirar en la captura a continuación.

Espero que tu puedas resolver este problema que a mi me toco vivir, y ahora ya sabemos como arreglarlo...

No hay comentarios:

Publicar un comentario