Tengo un GridView en un panel de actualización. Es un asp heredado: GridView, por lo que tiene un pequeño icono de "exportarme" que hace precisamente eso. Funciona respondiendo a un clic de "exportación" con un archivo XLS. El problema es que si coloca el GridView inteligente dentro de un panel de actualización, ASP.NET piensa que el archivo XLS debe escribirse en el panel, que obviamente no es lo que queremos. Para esto, necesito un post-back completo cada vez.Forzar devolución de datos completa programáticamente desde UpdatePanel
Mis paneles de actualización están todos programáticamente generado
soluciones que no funcionan en este escenario preciso (muchos de los cuales están cubiertos en otra parte de SO):
En ASP.NET antes de la versión 4 Si deja la ID fuera de control, realizará una devolución de datos completa incluso desde un panel de actualización. Mi pregunta es para el último y más grande .NET 4 solamente.
ScriptManager.RegisterPostBackControl parece prometedor. Hace que el control posterior a la devolución use la ID del panel correcto como objetivo del evento, pero de lo contrario no ayuda.
Agregando un PostBackTrigger al panel Actualizar. Mis paneles de actualización se generan mediante programación, y MS indica que esto no es compatible. Mis pruebas indican que tienen razón: lo intenté de todos modos, pero esto no funciona.
Realmente no me gusta la idea de que el Smart GridView tenga que salir de sí mismo, pero traté de hacerlo poner un control extra fuera del updatePanel en estas circunstancias. La idea de hacer que un cliente haga clic en mi botón exportar dentro del panel sea redirigido por javascript del cliente para simular un clic en ese botón fuera del panel. Sin embargo, esto no funciona porque aparentemente no puedo agregar el control "externo" a la página. Obtengo el mensaje "La colección de control no se puede modificar durante las fases de DataBind, Init, Load, PreRender o Unload". error.
Usando jQuery para cambiar el control de "exportación" fuera del panel. MS debe tener una lista de controles que creen que están "en" el panel, y la ubicación física dentro del DOM no importa.
¿Alguien tiene alguna idea de cómo hacer que funcione? Sé mucho de esto debería funcionar, pero eso no es exactamente lo mismo.
No funciona de esa manera para mí. Si agrego el "postBackTrigger" cuando creo los paneles, falla si el button.ID aún no está presente (razonable), pero si lo agrego en mi control personalizado no tiene ningún efecto - sugiere algo de ciclo de vida . Me quedaré con eso. – philw
Si pongo el control del botón en la página en OnInit() del control que contiene los paneles de actualización, funciona como se sugiere. Si en cambio lo coloco donde lo necesito, en el OnInit() del control personalizado dentro del panel (buscando una copia de seguridad de la jerarquía de control para encontrar el panel de actualización), entonces no funciona. Más experimentación .. – philw
No estoy seguro si esto ayudará, pero revise esta pregunta (específicamente la respuesta): [FileUpload en FormView dentro de un UpdatePanel] (http://stackoverflow.com/questions/3555917/fileupload-in-formview-inside -an-updatepanel) – jdavies