2011-11-30 168 views
0

我正在創建動態控件,其中一個控件是一個按鈕。 我用下面的代碼來添加按鈕控件。動態創建的按鈕不觸發單擊事件

Button btnContinue = new Button(); 
btnContinue.Attributes.Add("class", "button"); 
btnContinue.ID = "btnContinue"; 
btnContinue.Text = "Continue"; 
btnContinue.CausesValidation = false; 
btnContinue.Click += new EventHandler(btnContinue_Click);     
lineAdd.Controls.Add(btnContinue); 

並按鈕單擊事件如下。

protected void btnContinue_Click(object sender, EventArgs e) 
{ 
    ... 
} 

此事件未觸發。任何想法爲什麼這不是事件發生。如果我錯了,請糾正我。

在此先感謝。

+0

你可以發佈圍繞你的按鈕添加代碼的代碼嗎?你在頁面生命週期中的哪些地方添加它? – Chris

+0

感謝您的回覆。我正在頁面中創建按鈕加載保護無效Page_Load(對象發件人,EventArgs e) if(!IsPostBack)....................... .................添加其他控件和按鈕.......................... ...........................} { – SunVigna

+0

看看BritishDevelopers的答案,看起來是對的。在「Page_Load」中創建按鈕不會創建按鈕並正確鏈接事件。確保你的代碼放入'Page_Init(object sender,EventArgs e)'方法中,如果它不存在於你的頁面中,就創建它。 (你應該能夠使用覆蓋) – Chris

回答

2

確保您在頁面生命週期中足夠早地創建該按鈕。看看它創建的頁面的OnInit。

這是因爲事件處理事件發生在Page Init之後。當然,按鈕必須在事件可以被檢測到之前被創建。網頁表單的樂趣...

+0

我在pageLoad中創建按鈕... – SunVigna

0

嘗試將UseSubmitBehavior屬性設置爲True。

1

您必須在OnInit()方法內初始化動態創建的控件(請參閱MS kb post),否則頁面將不會考慮它。 請注意,控件必須在由控件本身引起的回發期間創建。

相關問題