Cuando comienzo una devolución de datos usando __doPostBack, se crea un archivo que vuelve al usuario para descargarlo en el HttpContext.Current.Response
.Cómo puedo evitar que una devolución de datos actualice la página en el cliente
Debido a cambio la Response
, la página, incluyendo sus valores de JavaScript no se modifica
Pero cuando no tengo el archivo de salida, se actualiza la página (a causa de la devolución de datos) y la modificación javascript en la página son perdió.
¿Cómo puedo 'detener' la devolución de datos para continuar y conservar mi página actual? No puedo usar una devolución de datos asíncrona porque necesito la devolución de datos para permitir que el usuario descargue el archivo.
EDIT: información más después de algunas preguntas en los comentarios:
- Se solicita al archivo de una solicitud de servicio web. El servicio web necesita para ejecutar una consulta exhaustiva para determinar si se creará un archivo. I prefiero que esto solo suceda una vez.
- El usuario puede arrastrar/soltar algunos filtros que se utilizarán en el archivo solicitud. Si no hay ningún archivo disponible, el usuario debería poder cambiar sus filtros, por lo que no debe modificarse la página.
El primero que viene a la mente es (no probado): utilizar un botón oculto como [PostbackTrigger] (http://msdn.microsoft .com/en-us/library/system.web.ui.postbacktrigger.aspx) para su UpdatePanel. En su manejador de servidor donde ha creado el archivo (o no) hasta el momento, registre javascript que 'haga clic' en este botón si tiene un archivo. Maneje este evento y entregue el archivo. Si no hay ningún archivo, no registre el script. –
Funcionará, pero mi problema es que el archivo se solicita desde un servicio web. No sé si tendré un archivo hasta que se complete la solicitud. Con su solución, el archivo se crearía dos veces. Es una pesada petición que puede tomar un tiempo, así que preferiría no hacerlo dos veces. –
¿Por qué necesita crear el archivo para saber si existe? Eso suena bastante extraño. Agregaría un método a su servicio web que verifica esto sin crear. –