2013-12-12 4 views
3

Я хочу обработать событие щелчка кнопки ссылки, которая динамически создается.Обработка события LinkButton таблицы, генерируемой динамически?

Но я не получаю btn.click для этого.

У меня есть следующий код:

Public Sub test() 
     Dim row As New HtmlTableRow() 
     Dim cell As New HtmlTableCell() 


     For i = 0 To 10 
      row = New HtmlTableRow() 
      For j = 0 To 3 
       cell = New HtmlTableCell() 
       cell.InnerText = "m" 
       Dim btn1 As New LinkButton 
       btn1.ID = i 

       cell.Controls.Add(btn1) 
       row.Cells.Add(cell) 
      Next 
      tableContent.Rows.Add(row) 
     Next 
    End Sub 

C# Код:

public void test() 
{ 
    HtmlTableRow row = new HtmlTableRow(); 
    HtmlTableCell cell = new HtmlTableCell(); 


    for (i = 0; i <= 10; i++) { 
     row = new HtmlTableRow(); 
     for (j = 0; j <= 3; j++) { 
      cell = new HtmlTableCell(); 
      cell.InnerText = "m"; 
      LinkButton btn1 = new LinkButton(); 
      btn1.ID = i; 

      cell.Controls.Add(btn1); 
      row.Cells.Add(cell); 
     } 
     tableContent.Rows.Add(row); 
    } 
} 

Не получают IntelliSence на btn1.click:

enter image description here

EDIT:

enter image description here

Ответ в C# также может помочь мне.

ответ

4

Для VB.NET типа AddHandler btn1., а затем вы должны увидеть Click события в Intellisense, как это:

AddHandler btn1.Click, AddressOf Me.LinkButton_OnClick 

С у вас есть динамический контент (таблица), вам нужно будет перестроить таблицу при каждой загрузке страницы, а не только в первую очередь. Причина этого заключается в том, что Page_Load происходит до события нажатия кнопки ссылки, поэтому к моменту события клика таблица должна быть воссоздана; иначе обработчик события клика попытается взаимодействовать с содержимым, которого нет.


Читать ASP.NET Page Life Cycle Overview для получения дополнительной информации о жизненном цикле страницы и всех событий и их порядок.

+0

после вставки этого всего таблицы, созданной dynamicali, исчезли –

+0

Вы перестраиваете таблицу на каждый пост назад (т. Е. Событие «Page_Load»)? –

+0

Нет, я дал условие, если не постбедренный, тогда только вызов метода –

4

В C# вы можете сделать:
1. Объявите обработчик

protected void btn1_Click(object sender, EventArgs e) 
{ 

} 

2. Назначить обработчик:

LinkButton btn1 = new LinkButton(); 
btn1.Click += new EventHandler(btn1_Click); 
+0

Я не получаю интеллекта на l.click –

+0

См. Я обновил свой ответ. Пожалуйста, попробуйте это. – P5Coder

+0

все еще не получается –

3

Вы должны добавить обработчик события и идентификатор на Боттона чтобы иметь возможность идентифицировать его:

public void test() 
{ 
    HtmlTableRow row = new HtmlTableRow(); 
    HtmlTableCell cell = new HtmlTableCell(); 


    for (i = 0; i <= 10; i++) { 
     row = new HtmlTableRow(); 
     for (j = 0; j <= 3; j++) { 
      cell = new HtmlTableCell(); 
      cell.InnerText = "m"; 
      LinkButton btn1 = new LinkButton(); 
      btn1.ID = i; 

      // Add EventHandler for click events 
      btn1.Click += new EventHandler(LinkButton_OnClick); 

      cell.Controls.Add(btn1); 
      row.Cells.Add(cell); 
     } 
     tableContent.Rows.Add(row); 
    } 
} 

Затем добавить следующие м енишь в код, который перехватывает событие щелчка:

protected LinkButton_OnClick(object sender, EventArgs e) 
{ 
    var button = (LinkButton)sender; 
    // You can now access the id of the clicked link-button using button.ID 
} 
Смежные вопросы