2009-01-24 38 views
0

我在編程上做了一些LinkBut​​tons,他們工作得很好,但現在事件並沒有解僱,我找不到原因?爲什麼我的EventHandler沒有發射? (Asp.Net C#)

這是什麼使按鈕:

protected void MakeUploadButton(attachment a, PlaceHolder ph) 
{ 
    LinkButton lb = new LinkButton() 
    { 
     Text = "Upload New " + a.attachment_type.type_name, 
     CssClass = "button right", 
     ID = "lb" + a.attachment_type.file_tag, 
     CommandArgument = a.attachment_type_id.ToString(), 
     CommandName = a.attachment_type.type_name, 
     CausesValidation = false 
    }; 
    lb.Click += new EventHandler(showModalPopup); 
    lb.DataBind(); 
    ph.Controls.Add(lb); 
} 

ShowModalPopup存在,並且所有的,但是當我在調試運行它,沒有它裏面不斷觸發...由於某種原因,沒有得到調用。有任何想法嗎?


發現我的答案在這裏: http://bytes.com/groups/net-asp/329287-linkbutton-event-not-firing

+0

頁面是否回發點擊LinkBut​​ton?或者根本沒有回帖? – Preets 2009-01-24 09:51:00

回答

2

這是因爲.NET核武器上回發一個元素的事件處理程序,如果他們沒有在視圖狀態設置。你所需要做的就是在onload事件中重新添加事件處理程序。

Protected Sub Page_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
    If Page.IsPostBack Then 
     Dim lb as ListButton = TryCast(Page.FindControl("IDOfControl"), LinkButton) 
     lb.Click += new EventHandler(showModalPopup); 
    End If 
End Sub 
0

確保您在每個頁面週期創建控件(回發也是如此)。這個MSDN article給出了ASP.NET頁面生命週期的一個很好的概述。

趕超added事件控制

如果在 運行時動態創建的控件或在數據綁定 控件模板聲明撰寫 ,他們的活動最初 不同步那些在頁面上的其他 控件。例如,對於 運行時添加的控件, ,Init和Load事件可能在頁生命週期中比 晚得多 ,控件的相同事件以聲明方式創建 。

因此,從 時,他們被實例化, 動態添加控件和模板 控制提高他們 事件一個接一個,直到他們 在此期間,它被添加到控制 已經趕上事件 集合。

相關問題