我正在动态创建用于分页的按钮,单击这些按钮应调用事件处理程序。回发正在发生,但是它从未命中事件子。 这是我的按钮创建代码(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
答案 0 :(得分:2)
该代码在哪里?
请记住,每个回发都会创建(然后销毁)页面类的全新实例。您不必在发布后保留相同的实例。这意味着用于创建控件的代码必须在每次回发中重新运行。否则,这些控件将不存在,它们将在下一个服务器事件后消失。此外,这必须在页面生命周期的很早就发生... 还原ViewState之前,因为如果此时尚不存在控件,则它们将无法获取更新的ViewState,并且ViewState为页面生命周期如何知道他们需要引发click事件。 Page_Load()
为此为时已晚。尝试改用Page_Init()
或Page_PreInit()
。