JCB: (ASP.Net): Eventhandler bei dynamisch gen. Controls

Beitrag lesen

Hallo!

Es geht um folgende ASP.Net-Seite:

#############################################

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="test.aspx.vb" Inherits="test" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>

<form id="form1" runat="server">
    <div>
      </div>
    </form>
</body>
</html>
#############################################

'#############################################
test.aspx.vb:

Partial Class test
    Inherits System.Web.UI.Page

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        CreateBT()
    End Sub
    Private Sub Bt_click(ByVal sender As Object, ByVal e As System.EventArgs)
        CreateBT()
    End Sub
    Private Sub CreateBT()
        Me.form1.Controls.Clear()
        Dim bt As New Button
        AddHandler bt.Click, AddressOf Bt_click
        Me.form1.Controls.Add(bt)
    End Sub

End Class
'#############################################

Erklärung:
Beim Laden der Seite wird ein Button der Form hinzugefügt und das Click-Ereignis mit Bt_click verknüpft. Wenn der Button geklickt wird, wird der Button erstmal wieder hinzugefügt (um überhaupt auf das Ereignis reagieren zu können) und anschließend wird das Ereignis BT_Click ausgelöst. Dort soll er den alten Button löschen und einen neuen Button mit gleicher Funktion hinzufügen. Auf dieser Testseite scheint dies sinnlos zu sein, jedoch auf einer anderen Seite generiere ich die Controls in Abhängikeit von Daten, die sich bei dem Ereignis Bt_click jedes mal ändern.

Problem:
Nachdem das Ereignis Bt_click ausgelöst wurde, erscheint wie erwartet der neue Button auf der Seite. Jedoch wird dieses mal beim Anklicken kein BT_Click-Ereignis ausgelöst. Dies erfolgt erst beim 2. Klicken.

Kann mir jemand diese Verhalten erläutern oder vielleicht sogar ne Lösung anbieten :)?

Gruß
Jan