15 abr 2008

// // 11 comentarios

Problemas con el UpdatePanel y el FileUpload?

Hola amigos!

Nuevamente compartiendo algo con ustedes, en esta ocasión vamos a hablar del FileUpload y el UpdatePanel, pues resulta que trabajando en una aplicación, tenia que subir algunas imágenes, y como estoy usando AJAX Extensions dentro de mi aplicación ASP .NET 2.0, coloque el control FileUpload para subir mis imágenes, dentro del UpdatePanel, pero oh! sorpresa al momento de cargar el archivo no me mostraba nada dentro del control y buscando ver que es lo que estaba pasando, pude ver que estos controles no son compatibles, así que no podía trabajar como me hubiese gustado.

Pues para tratar de darle solución a mi problema, use el FileUpload AJAX de Subgurim que si trabaja bien con el UpdatePanel ya que hace una carga asíncrona independiente y tiene muchas funcionalidades bastante buenas, pero el uso que le daba no se ajustaba a mis necesidades, así que volvemos al inicio a ver la manera de usar el FileUpload dentro del UpdatePanel.

La única forma de hacer que esto funcione es forzando el postback, pero entonces para que tengo el UpdatePanel si al final haré un postback y se volverá cargar la página?, pues en este caso el postback será solo cuando se invoque a un control dentro del UpdatePanel, así que lo demás sigue trabajando bien, esto funciona con los Triggers del UpdatePanel, en este caso haremos uso del PostBackTrigger el cual usa como parámetro el ID de un control a través del cual se generará el postback.

<Triggers>


    <asp:PostBackTrigger ControlID="btnUpload" />


</Triggers>




Con esto ya puedo trabajar con el control FileUpload tranquilamente y controlar la carga de las imágenes con el botón.



Para mas información sobre el control UpdatePanel y los controles que no son compatibles, aquí les dejo este enlace:



UpdatePanel Control Overview (ingles)



Saludos!



11 comentarios:

Anónimo dijo...

hola, si, la verdad está bueno el post,...

igual hay muchos parecidos en codeproject y msdn,

pero en ninguno está resuelto lo siguiente:

el boton tiene que estar renderizado para que el postbackTrigger funcione.

Yo tenia el boton como visible="false"
(porque despues se lo mostraba segun algunas opciones que el usuario iba seleccionando)

y asi no funciona.


entonces lo que hice fue manejarlo desde los estilos:

o sea, al boton le puse en style="display:none;"

y cuando lo tenia que mostrar, le puse style="display:inline;"

desde codigo, claro.

bueno, espero que le sirva a alguien mas.

Saludos

Anónimo dijo...

A mi me resolvio horas de trasnochar, tenia un problema similar.. tenia controles dentro de un updatepanel que llamaban a un modalpopupextender.. y en google no encontraba solucion hasta que di con tu post.
Millon de gracias!!

Alex dijo...

Hola Ricardo, Muchas gracias, estuve buscando esta solucion toda una mañana y ya lo habia dejado por la paz y resignado a no usar updatepanel para las paginas que usaran el fileupload.
Te deseo lo mejor y gracias nuevamente.

Unknown dijo...

Hola Ricardo, tengo un problema identico pero la verdad no me queda claro como usar el PostBackTrigger, podrias por favor mostrar todo el codigo?

Ricardo La Rosa dijo...
Este comentario ha sido eliminado por el autor.
Ricardo La Rosa dijo...

Hola Paola, la forma de trabajar con el postbacktrigger seria la siguiente:

<asp:UpdatePanel ID="upFilter" runat="server">


    <ContentTemplate>


    </ContentTemplate>


<Triggers>

    <asp:PostBackTrigger ControlID="" /> </Triggers>

 </asp:UpdatePanel>

Espero te sirva.

Saludos!

leipunk dijo...

muchas gracias .....

Anónimo dijo...

La verdad? se me sigue recargando la pagina, tal vez sea que estoy usando un iframe para poner mis imagenes cargadas, afectara esto?.
Si pudieras poner un ejemplo mas claro, te agradeceria un monton

slds

Pablo Garnica dijo...

garcias por compartir.

existe una solucion cuando dentro del updatepanel tengo un acordeon y dentro de este si esta el Updat panel ?

Anónimo dijo...

Genio!!! capo!!! me salvaste!!

Angie Mar dijo...

Se que es una publicacion que ya tiene tiempo , pero tenia un caso igual, utilice la sugerencia que diste, Pero tengo otro problemita.
Quiero hacer uso de un ModalPopupExtender con el cual muestra una barra de progreso mienstras se reliza el proceso.
Añandiendo


</Triggers
no me muestra ya la barra de proceso. hay alguna forma de resolverlo?

GRacias