Laden...

[gelöst] Problem mit ModalPopupExtender des AjaxControlToolkits

Letzter Beitrag vor 15 Jahren 7 Posts 1.218 Views
[gelöst] Problem mit ModalPopupExtender des AjaxControlToolkits

Hallo zusammen!

Ich habe folgendes Problem mit dem ModalPopupExtender des AjaxControlToolkits

Zuerst lasse ich in einem Web.UI.UserControl im Codebehind ein UpdatePanel erzeugen, in dieses setze ich dann ein HiddenField als TargetControl, sowie ein Panel als PopupControl des MPE.

using AjaxControlToolkit;


protected void Page_Load(object sender, EventArgs e)
        {
            UpdatePanel Update_Panel    = new UpdatePanel();
            Update_Panel.ID             = "Update_Panel";
            

            HiddenField Hidden  = new HiddenField();
            Hidden.ID           = "Hidden";
            

            Panel wPanel    = new Panel();
            wPanel.ID       = "wPanel";
            wPanel.CssClass = "windowPanel";
            

            ModalPopupExtender Ext = new ModalPopupExtender();
            Ext.ID                  = "Ext";
            Ext.TargetControlID     = Hidden.ID;
            Ext.PopupControlID      = wPanel.ID;
            Ext.BackgroundCssClass  = "windowBackground";

            Update_Panel.ContentTemplateContainer.Controls.Add(Hidden);
            Update_Panel.ContentTemplateContainer.Controls.Add(wPanel);
            Update_Panel.ContentTemplateContainer.Controls.Add(Ext);
            this.Controls.Add(Update_Panel);

}

...wenn ich das UserControl nun auf der Seite einbinde, wird mir das ganze so angezeigt als gebe es keinen MPE (Inhalt des Panels wird angezeigt und ist nicht ausgeblendet). Klicke ich nun aber einen Button (der eigentlich nichts mit dem UserControl selbst zu tun hat), welcher aber einen AJAX Postback auslöst und dabei ein anderes UpdatePanel aktualisiert wird das ganze plötzlich richtig angezeigt also das Panel verschwindet. Ich habe schon versucht das UpdatePanel mal rauszunehmen aber ohne dieses geht der MPE genauso wenig.

Hoffe ihr könnt mir helfen.

Viele Grüße
thomster

Dein Panel brauch die CSS Eigenschaft:

display:none

oder

visibility:hidden

Mit einem von beiden funktionierts, bin mir nur nicht mehr sicher welche es war 😉

Danke für die Antwort aber ich glaub du hast mich etwas misverstanden.

Wenn ich das Panel in CSS auf display:none; oder visibility: hidden; setze wird es zwar nichtmehr angezeigt aber der ModalPopupExtender des AjaxControlToolkits funktioniert dadurch trotzdem nicht...

Schöne Grüße
thomster

Also dann ist irgendwas bei deiner Systematik falsch.
Zeig mal den Code in der CodeBehind Datei der dein ModaPop Up anzeigt.

Also ich handhabe das immer so in der .aspx Datei

  1. Image Button der als Style display:none hat für den ModalpopUp Extender
  2. Der ModalPopUpExtender
  3. Das Panel das eingeblendet werden soll (mit display:none )
  4. in dem Panel ein Update Panel, damit ich diese Inhalte neu laden kann.

Das ganze wird dann durch Events vom User ausgelöst über ModalPopUpExtender.Show

Ich hab dann noch so tolle weitere Sachen wie ein DragPanelExtender, ein TabControl und alles mögliche da drin, und noch nie Probleme damit gehabt.

im normalen aspx code (des MPE beinhaltenden Usercontrols) funktioniert das ganze auch wenn ich das usercontrol normal auf der seite einfüge.
wenn ich das Usercontrol (dass den MPE beinhaltet) jedoch in einem anderen Usercontrol im Codebehind erzeugen lassen will, seh ich beim debuggen z.B. anhand der Show() funktion, dass er mir diese nicht aufrufen kann weil der MPE zu diesem zeitpunkt noch gar nicht erzeugt wurde. Deswegen dacht ich lass ich ihn direkt im Codebehind erzeugen bevor ich die Show() Funktion aufrufe, aber dabei entsteht eben das oben genannte problem, das er nicht geladen wird oder was auch immer.

Schöne Grüße

Wie erzeugst du dein UserControl in der CS datei? Ich hoffe mit Page.LoadControl.
Mit "new" gehts nicht.

hey danke erstmal für deine Hilfe 😉

also das mit dem LoadControl wusste ich echt nicht aber das war wohl nicht das einzigste Problem. Ich hatte in einem anderen UserControl (das nichts mit dem aktuellen zu tun hat) wohl ein Panel gelöscht, dieses Panel wird aber von einem PopupExtender verwendet, da es nichtmehr da war hat es einen Fehler verursacht der somit später auch meinen MPE lahm gelegt hat.

Also nochmals Danke 👅

Viele Grüße
Thomas