Announcement

Collapse
No announcement yet.

Usercontrols und Ereignisprozeduren

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Usercontrols und Ereignisprozeduren

    Hallo NG,

    ich habe mal wieder ein Problem mit einem Usercontrol. Ich lade mit dem folgendem Code verschiedene Usercontrols dynamisch nach über einen Button:

    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load<br>
    If Session("pf") = "" Then Session("pf") = "darstellungsschicht/texttest.ascx"<br>
    Me.Panel1.Controls.Add(LoadControl(Session("pf"))) <br>
    End Sub<br>

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click<br>
    Session("pf") = "darstellungsschicht/personsuchen.ascx"<br>
    Me.Panel1.Controls.Clear()<br>
    Me.Panel1.Controls.Add(LoadControl(Session("pf"))) <br>
    End Sub<br>

    In dem Usercontrol, dass durch den Button geladen wird, befindet sich eine Schaltfläche. Leider wird die Ereignisprozedur dieses Buttons erst nach dem 2. Klick (also nach einem Postback) aufgerufen. Wie kann ich dieses Problem lösen??

    Gruß

    Thomas

  • #2
    Hallo,

    habe das gleiche Problem in C#:
    UserControls, die ich sofort beim Page_Load meiner Seite lade funktionieren einwandfrei. Blende ich aber nach einem Button-Click ein Control ein, so muß man auf diesen Button immer zweimal klicken, damit das Click-Ereignis ausgelöst wird.
    Vermutlich erflogt hier die Registrierung des EventHandlers zu spät.

    Kennt sich jemand damit aus und weiß, wie man das Problem löst?

    MfG
    Steffe

    Comment


    • #3
      Hi,

      bei meiner Recherche im Internet habe ich nach langem Suchen endlich rausgefunden, daß das wohl noch an Unzulänglichkeiten von ASP.NET scheitert. Da müssen die Jungs von Microsoft wohl noch etwas feilen. Wenn bei einem Button-Click-Ereignis ein anderes User Control mit einem Button eingefügt wird kann auf das OnClick-Ereignis des neuen Buttons <b>nicht</b> reagiert werden. Hierzu ist ein Neuladen der Seite notwendig. (Deswegen 2x Klicken)

      Ich habe das ganze jetzt so umgangen:
      Session["pageViewed"] = pages.pageXY;
      Server.Transfer("Default.aspx");

      Hierbei ist pages eine Enumeration mit allen möglichen Seiten. Es wird also in dem Button-Klick-Ereignis zum Schluß einfach in der Session abgelegt, welche Seite angezeigt werden soll. Dann wird die Seite neu geladen und im Page_Load der Seite werden dann je nachdem welcher Wert in der Session abgelegt ist die notwendigen User Controls eingebunden.

      Nicht besonders schön, aber die einzige andere Möglichkeit, die ich gefunden habe wäre anstatt <asp:Button>'s normale HTML-Buttons (<input type="text">'s zu verwenden und dann beim Page_Load abprüfen, ob einer davon geklickt wurde.

      MfG
      Steffe

      Comment


      • #4
        Hi,
        schön dass ich nicht alleine mit meinem Problem da stehe, das motiviert dann doch wieder ;-). Wir haben genau den selben Ansatz mit dem "künstlichen" Postback (server.transfer") gewählt. Eine andere Lösung scheint es wohl noch nicht zu geben. Vielleicht ist das Problem ja mit dem neuen Framework (bzw. der neuen ASP.NET) - Version gelöst. Hat da schon jemand Erfahrung

        Comment

        Working...
        X