Динамическая кнопка - onclick просто не будет работать

Я использовал этот код в нескольких других проектах, но на этот раз я просто не могу заставить его работать.

Я пытаюсь отследить событие нажатия кнопки управления, но оно просто не срабатывает.

Я попытался перезагрузить элементы управления в page.init (мне пришлось изменить ControlsToLoad с viewstate на сессию, чтобы это снова загрузило элементы управления), но это тоже не сработало.

Это страница, которую я использую для тестирования:

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

Любая помощь приветствуется.

Спасибо

Бен

1 ответ

Решение

Чтобы ваши динамически добавленные элементы управления участвовали в жизненном цикле страницы, вам необходимо создать их в событии PreInit страницы. см. жизненный цикл страницы ASP.NET

Обновить:

Вы должны удалить oTile.Dispose() как это уничтожает объект и удаляет обработчик.

Другие вопросы по тегам