2013-12-12 36 views
3

我想處理動態創建的鏈接按鈕的點擊事件。處理dynamicaly生成表的LinkBut​​ton事件?

但我沒有得到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#代碼:

上btn1.click
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:

enter image description here

編輯:

enter image description here

在C#中的答案也可以幫助我。

回答

4

對於VB.NET,類型AddHandler btn1.,然後你會看到在智能感知的Click事件,像這樣:

AddHandler btn1.Click, AddressOf Me.LinkButton_OnClick 

由於你有動態內容(表格),你需要在每一次頁面加載時重建表格,而不僅僅是第一次。原因是Page_Load發生在鏈接按鈕單擊事件之前,因此在發生點擊事件時,表需要被重新創建;否則您的點擊事件處理程序將嘗試與不在那裏的內容進行交互。


閱讀ASP.NET Page Life Cycle Overview瞭解關於頁面生命週期以及所有事件及其順序的更多信息。

+0

粘貼完成後,所有創建的動態列表都消失了 –

+0

您是在每個回發表(即Page_Load事件)上重建表格嗎? –

+0

nope我已經給出了條件,如果不是回發,然後只調用方法 –

4

在C#中,你可以這樣做:
1.聲明的處理程序

protected void btn1_Click(object sender, EventArgs e) 
{ 

} 

2.指定的處理程序:

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

我沒有獲得intelisence l.click –

+0

請參閱我已更新我的答案。請試試這個。 – P5Coder

+0

仍然沒有得到 –

3

您必須添加一個事件處理程序和ID的鈕以便能夠識別它:

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); 
    } 
} 

然後添加下面的m ethod到您的代碼捕獲點擊事件:

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 
}