2011-01-06 15 views
0

Ich habe eine solche Seite und die Kontrollstruktur ist so.In der Server-Seite, wie Sie feststellen, ModalPopupExtender ist derzeit verborgen?

  • UpdatePanel
    • Button
    • ModalPopupExtender
    • ModalPopup Content Container

Anfänglich ModalPopup Content Container ist eine leere Kontrolle.

Nachdem der Benutzer auf Button geklickt hat, wird ein asynchrones Postback ausgelöst. Während des Postbacks generiert der Server den Inhalt und hängt an ModalPopup Content Container an. Stellt auch die Eigenschaften von ModalPopupExtender ein. Schließlich ruft ModalPopupExtender.Show() Methode und UpdatePanel.Update() Methode, um das modale Popup anzuzeigen.

Diese Methode funktioniert einwandfrei, wenn alle Steuerelemente in ModalPopup Content Container eine einfache Steuerung enthalten. Wenn ein Steuerelement eine Schaltfläche ist, die auf die Serverseite zurückgeschickt werden muss, ist das ein Problem.

Da die Steuerelemente in ModalPopup Content Container dynamisch erstellt wird. Wenn ein Steuerelement in ModalPopup Content Container ein Postback-Ereignis auslöst, muss das Steuerelement erstellt werden, bevor RaisePostBackEvent serverseitig aufgerufen wird.

Meine Idee ist zu bestimmen, ob die ModalPopupExtender ist versteckt oder auf der Client-Seite angezeigt, um die dynamische Kontrolle in ModalPopup Content Container neu zu generieren.

Also meine Frage ist, wie man eine ModalPopupExtender ist versteckt oder gezeigt.

Of coz, wenn Sie denken, dass meine Methode überhaupt nicht funktioniert, bitte geben Sie mir einige Vorschläge. Vielen Dank!

Antwort

1

Eine Möglichkeit besteht darin, eine boolesche Eigenschaft in ViewState zu verwenden, um die Popup-Bedingung zu verfolgen, d. H. Vor oder nach dem Aufruf der .Show-Methode auf true. Beim Schließen des Dialogs setzen Sie ihn auf false.

Sie können HiddenField auch verwenden, wenn Sie etwas auf der Client-Seite tun möchten.

+0

Ist dies der einzige Weg? Ich habe es schon mal durch, aber ich versuche, die ursprüngliche Logik von ModalPopupExtender zu betrachten. –

+0

Ich denke nicht, dass MPE eine solche Eigenschaft verfügbar macht und Ihre nächste Option wäre also, ein benutzerdefiniertes Steuerelement zu schreiben, das von MPE mit der gewünschten Funktionalität abgeleitet wird. – gbs