Button 在循环ASP.Net VB中创建时不会激发动态按钮单击事件

Button 在循环ASP.Net VB中创建时不会激发动态按钮单击事件,button,dynamic,event-handling,controls,updatepanel,Button,Dynamic,Event Handling,Controls,Updatepanel,我有同样的问题,但是我已经声明了page_Init事件中的所有控件。当我为循环中动态创建的按钮声明事件处理程序并将其地址设置为x函数时,它不起作用 有人能帮忙吗 以下是我的页面_Init中的代码: 以下是Nxt_btn_单击事件的代码: 找到解决办法了 在子循环中创建的按钮使用common button.id声明,尽管它们是在不同的UpdatePanel>面板中创建的,但分配给它们的ID相同。我所要做的就是更正这行代码 从 TempNxt_Button.ID=MyNextButton&i 到 此

我有同样的问题,但是我已经声明了page_Init事件中的所有控件。当我为循环中动态创建的按钮声明事件处理程序并将其地址设置为x函数时,它不起作用

有人能帮忙吗

以下是我的页面_Init中的代码:

以下是Nxt_btn_单击事件的代码:

找到解决办法了

在子循环中创建的按钮使用common button.id声明,尽管它们是在不同的UpdatePanel>面板中创建的,但分配给它们的ID相同。我所要做的就是更正这行代码

从 TempNxt_Button.ID=MyNextButton&i

此外,子循环现在使用x作为整数,而不是i

Private Sub DynamicControls_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init


'Dynamically Load X no. of Updates Panels, and x no. of Controls inside UpdatePanels.

    If (Not Me.DesignMode) Then                 ' Source [Error Creating Control" in the Design View in ] Source : http://tinyurl.com/obutas2

        Dim xLoop As Integer = 5

        For i = 1 To xLoop
            Dim TempUpdatePanel As New UpdatePanel
            TempUpdatePanel.ID = "MyUpdatePanel" & i
            TempUpdatePanel.UpdateMode = UpdatePanelUpdateMode.Conditional
            UpdatePanelContainer.Controls.Add(TempUpdatePanel)

            Dim TempPanel As New Panel
            TempPanel.ID = "MyPanel" & i
            TempPanel.Width = 500
            TempPanel.Height = 200
            TempPanel.BackColor = Drawing.Color.WhiteSmoke
            TempUpdatePanel.ContentTemplateContainer.Controls.Add(TempPanel)


            For x As Integer = 1 To xLoop
                Dim TempNxt_Button As New Button
                TempNxt_Button.ID = "MyNextButton" & i
                TempNxt_Button.Text = "Next >>"
                AddHandler TempNxt_Button.Click, AddressOf Me.Nxt_btn_Click
                TempPanel.Controls.Add(TempNxt_Button)

            Next

            If TempUpdatePanel.ID = "MyUpdatePanel1" Then
                TempPanel.Style.Add("display", "block")
            Else
                TempPanel.Style.Add("display", "none")
            End If

        Next
    End If

End Sub 
Protected Sub Nxt_btn_Click(ByVal sender As Object, ByVal e As EventArgs)

    Dim xLoop1 As Integer = 5

    For i = 1 To xLoop1
        Dim sTempPanel As Panel = FindControl("MyPanel" & i)

        If (sTempPanel Is Nothing) Then
        Else
            sTempPanel.Style.Add("display", "none")
        End If

        Dim sTempPanel1 As Panel = FindControl("MyPanel" & Mid(sender.ID, Len(sender.ID)) + 1)
        If (sTempPanel1 Is Nothing) Then
        Else
            sTempPanel1.Style.Add("display", "block")
        End If
    Next

End Sub
            TempButton.ID = "Button" & i & "_" & x