Laden...

Usercontrol in code zu panel hinzufügen + usercontrol event feuern

Erstellt von schillerdeluxe vor 11 Jahren Letzter Beitrag vor 11 Jahren 1.434 Views
S
schillerdeluxe Themenstarter:in
138 Beiträge seit 2006
vor 11 Jahren
Usercontrol in code zu panel hinzufügen + usercontrol event feuern

Hallo, ich habe ein eigentlich eher triviales Problem, was ich allerdings auf die schnelle durch Foren SuFu und google alleine nicht lösen kann.

Ich füge mittels Code meiner ASP.NET Seite ein selbst erstelltes UserControl hinzu.
Dieses UserControl hat mitunter auch Events. Wenn ich allerdings die Events auslöse, werden diese nicht gefeuert, PostBack passiert trotzdem.

Kurzer Code Ausschnitt:


Page:

// Load UserControl
            var invitationNotification = LoadControl("Controls/Chat/Invitation.ascx");
            

            var ucInvitation = ((Controls.Chat.Invitation) invitationNotification);

            ucInvitation.Content = (Invitation) sender;
            ucInvitation.HandleError += invitationNotification_HandleError;
            ucInvitation.HandleResponse += invitationNotification_HandleResponse;

            pInvitations.Controls.Add(invitationNotification);
            this.upMain.Update();

        void invitationNotification_HandleResponse(object sender, EventArgs e)
        {
// dieser code wird nicht aufgerufen !!! WARUM ?
            var control = (WebControl) sender;
            if(pInvitations.Controls.Contains(control))
            {
                pInvitations.Controls.Remove(control);
                upMain.Update();
            }
        }

UserControl:
protected void btnAccept_Click(object sender, EventArgs e)
        {
            Content.Reply = server.contracts.Chat.Invitation.Response.Acception;

            try
            {
                Global.ChatManager.ResponseInvitation(Content);
                if (HandleResponse != null)
                    HandleResponse(this, e);
                
            }
            catch (Exception ex)
            {
                if (HandleError != null)
                    HandleError(ex, e);
            }
        }


Das UserControl wird zu der Seite hinzugefügt, feuere ich aber das Event durch den Button Klick des Controls, wird das Event nicht gefeuert.

Hat vlt jemand eine Idee was ich falsch mache?

Danke im vorhinein.

3.170 Beiträge seit 2006
vor 11 Jahren

Hallo,

vermutlich abonnierst Du beim Neuladen der Seite die Events zu spät, so dass zur Zeit, zu der der PostBack ausgeführt wird, diese noch nicht gesetzt sind.

An welcher Stelle (in welchem Page-Handler) läuft denn dieser Code, und ist da evtl. noch irgendeine Abfrage auf IsPostBack im Spiel?

            ucInvitation.HandleError += invitationNotification_HandleError;
            ucInvitation.HandleResponse += invitationNotification_HandleResponse;

Gruß, MarsStein

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca