Я динамически создаю кнопки для разбивки на страницы, которые должны вызывать обработчик событий при нажатии. Обратная передача происходит, но никогда не попадает в подпрограмму события. Это мой код создания кнопки (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
Я так считаю; При начальной загрузке страницы цикл вызывается внутри подпрограммы, при последующих обратных передачах та же подпрограмма вызывается нажатием кнопки.





Где живет этот код?
Помните, что каждая обратная передача создает (а затем уничтожает) новый экземпляр класса страницы. Вы не можете сохранять один и тот же экземпляр от публикации к публикации. Это означает, что код для создания элементов управления должен запускаться повторно при каждой обратной передаче. В противном случае этих элементов управления не будет, и они просто исчезнут после следующего события сервера. Более того, это должно происходить очень рано в жизненном цикле страницы ... до восстановления ViewState, потому что, если элементы управления еще не существуют на этом этапе, они не могут получить обновленный ViewState, а ViewState - это то, как жизненный цикл страницы знает, что им нужно поднять событие щелчка. Page_Load() для этого слишком поздно. Попробуйте вместо этого использовать Page_Init() или Page_PreInit().
Понимаю, значит, проблема в этом. Я реструктурирую код, спасибо!
Ваши кнопки также создаются при обратной передаче во время page_load?