2014-12-14 1 views
0

У меня такая же проблема, но я объявила все элементы управления в событии page_Init(). Когда я объявляю обработчик событий для динамически созданной кнопки в цикле и устанавливаю функцию Address to to x, это не работает.Динамическая кнопка Click Событие не запускается при создании в Loop ASP.Net VB

Может ли кто-нибудь помочь.

Вот код в моем page_Init():

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 

Вот код Nxt_btn_Click Event:

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 

ответ

0

Найденный излечение!

Кнопки, созданные в подколе, были объявлены с помощью обычных кнопок button.ID. Несмотря на то, что они создавались в разных панелях UpdatePanel>, у них были одинаковые идентификаторы, назначенные им. Все, что я должен был сделать это правильно эта строка кода

От TempNxt_Button.ID = «MyNextButton» & я

Для

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

Кроме того, цикл ребенок использует х, как целое, а не я сейчас.