Frage

Ich bin Recht neu auf ASP.NET und versuchen zu lernen, wie Dinge getan werden.Ich komme aus einem C# - hintergrund, so dass der code-behind-Teil ist einfach, aber denken wie ein web-Entwickler nicht vertraut ist.

Ich habe eine aspx-Seite, die enthält ein raster mit Kästchen.Ich habe eine Schaltfläche, die ist codiert über einen Button_Click-Ereignis zu sammeln, von denen eine Liste von Zeilen aktiviert sind, und erstellen Sie eine session-variable aus der Liste.Die gleiche Taste verwiesen wird (über TargetControlID) von meiner ascx-Seite ModalPopupExtender die Kontrollen der Systemsteuerung auf der ascx-Seite.

Wenn auf die Schaltfläche geklickt wird, wird das modal popup geöffnet, aber das Button_Click-Ereignis wird nie ausgelöst, so dass das modal nicht bekommen Ihren session-Daten.

Da die beiden Seiten sind getrennt, ich kann nicht rufen Sie den ModalPopupExtender aus der aspx.cs-code, kann ich nicht erreichen der Liste der Kontrollkästchen aus der ascx.cs-code, und ich sehe nicht ein Weg, um zu füllen meine session-variable und dann programmgesteuert aktivieren einige andere versteckte Taste oder Kontrolle, die dann öffnen Sie mein modales popup.

Irgendwelche Gedanken?

War es hilfreich?

Lösung

Alle ein Benutzersteuerelement(.ascx-Datei) ist eine Gruppe von Steuerelementen, die Sie gruppiert haben, um etwas wiederverwendbaren Funktionalität.Die Steuerelemente definiert sind immer noch auf der Seite Hinzugefügt, die Kontrolle collection (.aspx) durring Seite lifecylce.Die ModalPopupExtender verwendet die javascript-und dhtml-und ausblenden der Steuerelemente in der usercontrol-client-Seite.Was Sie sehen, ist, dass das click-Ereignis behandelt wird, die client-Seite von der ModalPoupExtender und es hebt die post zurück an den server.Dies ist das Standardverhalten von design.Man kann sicherlich den Zugriff auf die Seite control-Sammlung aus dem code-behind Ihres usercontrol, aber da es ist alle Teil der gleichen Steuerung Baum.Verwenden Sie einfach den FindControl(xxx) - Methode eines Steuerelements zu suchen für das Kind, müssen Sie es.

Andere Tipps

Nach einiger recherche folgende DancesWithBamboo die Antwort, die ich herausgefunden wie es funktionieren könnte.
Ein Beispiel Bezug zu meiner ascx-Seite in meiner aspx-Seite:

<uc1:ChildPage ID="MyModalPage" runat="server" />

Die aspx-code-behind zu greifen und öffnen Sie den ModalPopupExtender (benannt modalPopup -) würde wie folgt Aussehen:

AjaxControlToolkit.ModalPopupExtender mpe = 
    (AjaxControlToolkit.ModalPopupExtender) 
          MyModalPage.FindControl("modalPopup");
mpe.Show();

Sorry, aber ich bin verwirrt.Sie können nicht rufen Sie einen ascx direkt, so...

Ist Ihr modal-code ein, den Sie anrufen innerhalb der gleichen Seite, wie eine versteckte panel, etc;

Oder ist es eine andere aspx-Seite, die Sie aufrufen, sich an ein click-Ereignis?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top