Pregunta

Parece que en algunos casos, si terminas con Popups anidadas envueltas con updatePanels (no lo sé, y probablemente debería refactorizarse, pero eso es con lo que estamos trabajando debido a cómo algunos de los controles de usuario que queríamos para volver a usar se escribieron), cuando dispara una devolución de datos que debería abrir el modalPopup anidado, en su lugar, cierra el padre. En aras de la discusión, si establezco un punto de interrupción y ejecuto

((ModalPopupExtender)this.Parent.Parent.FindControl("modalPopupExtender'sID").Show();

justo antes de que se llame al método secundario Show () modalPopup, funciona como esperábamos originalmente. Me parece que, porque cuando updatePanels están anidados, pueden volver a publicar sus padres, el modalPopup principal '' no sabe '' se supone que se muestra y vuelve a cargar la visibilidad de su panel desde cero como falsa. Debido a que el modalPopup secundario se anida dentro de un panel principal cuya visibilidad es falsa, llamar a Show () tampoco tiene efecto. Entonces, en lugar de abrir otro modalPopup, el actual se cierra. Esto no es un error, solo un comportamiento que no esperábamos, por lo que fue difícil de rastrear sin excepción, pero creo que la explicación anterior tiene sentido ... Si he entendido el problema incorrectamente, por favor aclare e ilumíneme, ¡porque parece que esto no sucede todo el tiempo, creo que pasaría!
En este punto para esta situación particular, estamos atascados reescribiendo algunos de esos controles para no terminar con updatePanels anidados para que esto no suceda, pero tengo curiosidad:
¿Alguien se ha encontrado con este problema antes, y se le ocurrió alguna solución inteligente que no implique una llamada a FindControl () para volver a mostrar () el modalPopup en cuestión?

¿Fue útil?

Solución

¡He resuelto este problema!
¡Si cambia UpdateMode del UpdatePanel a '' Condicional '', el UpdatePanel padre no publica de nuevo cuando el UpdatePanel hijo vuelve a publicar, y luego anidarlos no es ningún problema!
No estoy seguro de por qué UpdateMode = " Siempre " es el valor predeterminado, pero, la lección aprendida.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top