2008-09-29 9 views
2

Il semble que dans certains cas, si vous vous retrouvez avec modalPopups imbriqués enveloppé avec updatePanels (pas idéal je sais, et devrait probablement être refactorisé, mais c'est ce que nous travaillons à cause de comment certains des contrôles utilisateur que nous voulions réutiliser ont été écrits), lorsque vous lancez une publication qui devrait ouvrir le modalPopup imbriqué, à la place il ferme le parent. Pour les besoins du raisonnement, si je mets un point d'arrêt et exécuterASP.NET AJAX imbriqué updatePanel modalPopup funkiness

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

droit avant que l'enfant méthode Show() de ModalPopup est appelée, elle fonctionne comme nous prévu. Il me semble que, quand updatePanels est imbriqué, ils peuvent poster leur parent, le parent modalPopup "ne sait pas" il est supposé être affiché et recharge la visibilité de son panneau à partir de zéro comme faux. Parce que l'enfant modalPopup est alors imbriqué dans un panneau parent dont la visibilité est false, appeler Show() n'a pas non plus d'effet. Ainsi, au lieu d'ouvrir un autre modalPopup, le dernier courant se ferme. Ce n'est pas une erreur, juste un comportement auquel nous ne nous attendions pas, donc il était difficile de traquer sans exception nulle part, mais je pense que l'explication ci-dessus est logique ... Si j'ai mal compris le problème, veuillez le clarifier et éclaire-moi, parce que cela ne semble pas se produire tout le temps que je le penserais!
À ce stade pour cette situation particulière, nous sommes coincé réécrire certains de ces contrôles pour ne pas finir avec updatePanels imbriqués donc cela ne se produit pas, mais je suis curieux:
Quelqu'un at-il déjà rencontré ce problème, et est-ce que vous êtes venu avec n'importe quel contournement intelligent qui n'implique pas un appel à FindControl() pour re-Show() le modalPopup en question?

+0

Plus j'utilise UpdatePanels, plus je les déteste. Je vous suggère d'apprendre jQuery ou une autre bibliothèque javascript et éviter d'utiliser UpdatePanels tous ensemble. – ctrlShiftBryan

+0

Ouais, eh bien, maintenant que jQuery est gonig pour être livré avec VS avec intellisense amélioré, cela va devenir beaucoup plus commun je pense! UpdatePanels est sympa en théorie parce que vous n'avez pas besoin de penser à eux, il suffit de les jeter dans le balisage ... si seulement ils travaillaient dans toutes les situations. – Grank

+0

Je ne suis pas sûr de comprendre la hiérarchie updatePanel/modal que vous avez. Est-ce que vous avez un modal qui contient un panneau de mise à jour, et le panneau de mise à jour contient un modal? – sledgebox

Répondre

3

J'ai résolu ce problème!
Si vous modifiez le UpdateMode de UpdatePanel en "Conditionnel", le UpdatePanel parent ne publie pas de retour lorsque l'UpdatePanel enfant publie, puis l'imbriquant n'est pas du tout un problème!
Je ne sais pas pourquoi UpdateMode = "Always" est la valeur par défaut, mais, leçon apprise.

+0

Nous avons appris à toujours mettre UpdateModels UpdateModes à Conditionnel. ..pour être honnête, je ne suis pas tout à fait sûr que je peux penser à un scénario où e nous voudrions les mettre à toujours. –

Questions connexes