Динамическое нажатие кнопки VB ASP не затрагивает событие обработчика
Я динамически создаю кнопки для нумерации страниц, которые должны вызывать обработчик событий при нажатии. Обратная передача происходит, однако она никогда не попадает в сабвуфер событий. Это мой код создания кнопки (i = 0):
Do While (i < pages)
Dim btn As New Button With {
.Text = (i).ToString,
.CommandArgument = (i).ToString,
.ID = "btnGrdPage_" + (i).ToString
}
AddHandler btn.Click, AddressOf Me.btnGrdParticipantPage_Click
dvPageNumbers.Controls.Add(btn)
i += 1
Loop
Событие, на которое я пытаюсь попасть по клику, выглядит следующим образом:
Protected Sub btnGrdParticipantPage_Click(ByVal sender As Object, ByVal e As EventArgs)
Dim x = 1
...
End Sub
1 ответ
Где этот код живет?
Помните, что каждый постбэк создает (а затем уничтожает) новый экземпляр класса страницы. Вы не можете хранить один и тот же экземпляр от поста к посту. Это означает, что код для создания элементов управления должен повторяться при каждой обратной передаче. В противном случае эти элементы управления не будут существовать, и они просто исчезнут после следующего события сервера. Более того, это должно произойти очень рано в жизненном цикле страницы... до восстановления ViewState, потому что, если элементы управления еще не существуют на данный момент, они не могут получить обновленное ViewState, а ViewState - то, как жизненный цикл страницы знает, что они нужно поднять событие клика. Page_Load()
слишком поздно для этого Попробуйте использовать Page_Init()
или же Page_PreInit()
вместо.