动态按钮 - 点击不起作用



我在其他一些项目中使用过这段代码,但这次我就是无法使用它。

我试图跟踪按钮控件的点击事件,但它没有启动。

我尝试重新加载page.init中的控件(我不得不将ControlsToLoad从viewstate更改为session,以便再次加载控件),但这也不起作用。

这是一个我用来测试的页面:

Inherits System.Web.UI.Page
Private ReadOnly Property ControlsToLoad() As List(Of String)
    Get
        If ViewState("ControlsToLoad") Is Nothing Then
            ViewState("ControlsToLoad") = New List(Of String)()
        End If
        Return DirectCast(ViewState("ControlsToLoad"), List(Of String))
    End Get
End Property


Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If ControlsToLoad.Count > 0 Then
        For Each sID As String In ControlsToLoad
            createControl(sID)
        Next
    End If
    If Not IsPostBack Then
        loadControls()
    End If
End Sub

Sub loadControls()
    createControl(123)
    ControlsToLoad.Add(123)
End Sub
Function createControl(ByVal sID As String)
    Dim oTile As New Button
    oTile.Text = Left(sID, 1)
    oTile.ID = sID
    oTile.Attributes("class") = "M_Tile_" & sID
    AddHandler oTile.Click, AddressOf click
    phMaze.Controls.Add(oTile)
    oTile.Dispose()
    oTile = Nothing

End Function
Protected Sub click(ByVal sender As System.Object, ByVal e As System.EventArgs)
    Response.Write("Here")
End Sub

感谢您的帮助。

感谢

Ben

为了让动态添加的控件参与页面生命周期,您需要在页面PreInit事件中创建它们。请参阅ASP.NET页面生命周期

更新:

您需要删除oTile.Dispose(),因为它会破坏对象并删除处理程序。

最新更新