2013-04-26 2 views
1

У меня есть кнопка, которая не создается динамически. Когда я нажимаю на эту кнопку, подсчитывается количество строк в текстовом поле. Я храню это в переменной, называемой count. В зависимости от значения count я создаю кнопки в панели.Обработка событий динамически созданных элементов управления в asp.net

До сих пор он работает правильно.

Теперь событие нажатия этих кнопок не срабатывает.

Я попытался ответить на мой вопрос. Но везде я получил тот же ответ. Создайте элементы управления в событии Page_Init. Но как это возможно? Я получаю значение count из строк текстового файла, и это значение count определяет, сколько кнопок будет создано на панели.

Dim btnAllow As New Button 
btnAllow.Text = "Allow" 
btnAllow.ID = "btA" & x 
AddHandler btnAllow.Click, AddressOf btnAllow_Click 

btnAllowList.Add(btnAllow) 

tdAllow.Controls.Add(btnAllow) 

Код для btnAllow_Click

Protected Sub btnAllow_Click(ByVal sender As Object, ByVal e As System.EventArgs) 
    For x As Integer = 0 To btnAllowList.Count - 1 
     If sender.ID.SubString(3) = btnAllowList(x).ID.Substring(3) Then 
     Dim lineCount = IO.File.ReadAllLines(PendingRequestsPath).Length 
     Dim reader As New System.IO.StreamReader(DocumentViewersPath) 
     Dim allLines As New List(Of String) 
     Do While Not reader.EndOfStream 
      allLines.Add(reader.ReadLine()) 
     Loop 
     reader.Close() 
     Dim DocumentViewerAlreadyExists As Boolean = False 
     For i As Integer = 0 To lineCount - 1 
      If ReadLine(i, allLines) = lblRequestorsList(x).Text Then 
       DocumentViewerAlreadyExists = True 
       Exit For 
      End If 
     Next 
     If DocumentViewerAlreadyExists = False Then 
      Dim Writer As System.IO.StreamWriter = IO.File.AppendText(DocumentViewersPath) 
      Writer.WriteLine(lblRequestorsList(x).Text) 
     End If 
     Dim line As String = "" 
     Dim r As IO.StreamReader = IO.File.OpenText(PendingRequestsPath) 
     Dim strFile As New ArrayList 
     While r.Peek <> -1 ' Loop through the file 
      line = r.ReadLine 'Read the next available line 
      ' Check to see if the line contains what you're looking for. 
      ' If not, add it to an ArrayList 
      If Not line.Contains(lblRequestorsList(x).Text) Then 
       strFile.Add(line) 
      End If 
      r.Close() 
      ' Because we want to replace the content of the file, we first 
      ' need to delete it. 
      If IO.File.Exists(PendingRequestsPath) Then 
       IO.File.Delete(PendingRequestsPath) 
      End If 
      ' Create a StreamWriter object with the same filename 
      Dim objWriter As New IO.StreamWriter(PendingRequestsPath, True) 
      ' Iterate through the ArrayList 
      For Each item As ArrayList In strFile 
       objWriter.WriteLine(item) ' Write the current item in the ArrayList to the file. 
      Next 
      objWriter.Flush() 
      objWriter.Close() 
     End While 
     End If 
    Next 
End Sub 
+0

Доля код, который вы используете для создания этих кнопок мой друг. –

+1

Код указан как вы сказали – Vishal

+0

Perfect. Теперь, пожалуйста, включите событие, на которое у вас есть этот код, а также метод btnAllow_Click :) –

ответ

1

Это работает для меня:

Protected Sub Button1_Click(sender As Object, e As System.EventArgs) Handles Button1.Click 
    Dim NumberOfControls As Integer = 10 
    Session("CreateControls") = NumberOfControls 
End Sub 

Protected Sub btnAllow_Click(ByVal sender As Object, ByVal e As System.EventArgs) 
    'This will be executed when clicking on the newly created buttons. 
End Sub 

Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load 
    If Session("CreateControls") IsNot Nothing Then 
     For x As Integer = 0 To Convert.ToInt32(Session("CreateControls")) 
      Dim btnAllow As New Button 
      btnAllow.Text = "Allow" 
      btnAllow.ID = "btA" & x 
      AddHandler btnAllow.Click, AddressOf btnAllow_Click 

      Panel1.Controls.Add(btnAllow) 
     Next 
    End If 
End Sub 
Смежные вопросы