2

J'utilise le contrôle ModalPopupExtender de la boîte à outils AJAX. Ce contrôle étend un panneau qui contient un contrôle CreateUserWizard. Toutefois, la validation du contrôle CreateUserWizard provoque une publication sur le serveur, ce qui ferme la fenêtre contextuelle. Je voudrais que le popup reste ouvert, même après la publication. D'après ce que je peux comprendre, je devrais utiliser un UpdatePanel. Cependant, je n'arrive pas à le faire fonctionner. La raison pour laquelle il est d'être assez délicat parce que la structure doit être:Empêche la fermeture de ModalPopup à la publication

ModalPopupExtender 
<Panel> 
<UpdatePanel> 
<ContentTemplate>...</ContentTemplate> 
</UpdatePanel> 
</Panel> 

Je ne peux pas suivre cette structure parce que la ModalPopupExtender repose sur un bouton qui est contenu dans le contrôle CreateUserWizard. Par conséquent, il doit être ajouté dans les balises <asp:CreateUserWizard> </asp:CreateUserWizard>. Je voudrais le bouton de soumission, intégré dans le contrôle CreateUserWizard, pour forcer une mise à jour du panneau. Des suggestions sur la façon dont la structure devrait être? Mon code est très personnalisé, donc c'est assez long. Cependant, la structure clé est similaire à celle-ci:

<asp:Panel> 
    <asp:CreateUserWizard> 
    <WizardSteps> 
     <asp:CreateUserWizardStep> 
      <ContentTemplate> 

      //Form Controls here 
      </ContentTemplate> 
      <CustomNavigationTemplate> 
       //The SUBMIT button that should force update 
       //CANCEL button 
      <asp:ModalPopupExtender /> //References the CANCEL button therefore has to be here 
      </CustomNavigationTemplate> 

     </asp:CreateUserWizardStep> 
    </WizardSteps> 
</asp:CreateUserWizard> 

</asp:Panel> 

serait le UpdatePanel Whereabouts placé? Ou y a-t-il un moyen plus efficace de s'assurer que ModalPopup ne ferme pas?

Merci pour toute aide

Répondre

3

J'ai réussi à résoudre le problème sans utiliser le panneau de mise à jour. Au lieu de cela, j'ai géré l'événement onClick du bouton 'Soumettre' de CreateUserWizard. Ici, j'ai obtenu l'instance de ModalPopupExtender existante dans le contrôle CreateUserWizard et j'ai appelé sa méthode Show(). J'ai laissé la déclaration ModalPopup dans les balises <CustomNavigationTemplate> de sorte que le bouton Cancel peut encore être consulté par lui.

1

Utilisation de validation côté client ou envelopper votre panneau avec un panneau de mise à jour et appeler la méthode Show() de l'extension modale pour montrer le modal du code-behind.

+0

J'ai essayé de mettre le UpdatePanel autour de tout le Panel, mais je viens d'obtenir l'erreur 'Un extender ne peut pas être dans un autre UpdatePanel que le contrôle qu'il étend. – keyboardP

+0

Vous ne devriez pas mettre votre prolongateur dans un autre UpdatePanel. Si vous utilisez un UpdatePanel imbriqué, vous devez déplacer l'extension depuis le UpdatePanel interne ou supprimer le UpdatePanel interne. –

Questions connexes