2009-08-20 54 views
0

我關心按鈕控制並放置在面板但不工作?事件控制不起作用?

protected void Button1_Click(object sender, EventArgs e) 
    { 
     Button btn = new Button(); 
     btn.Text = "Test button"; 
     Panel1.Controls.Add(btn); 
     btn.Click += new EventHandler(btn_Click); 
    } 

    void btn_Click(object sender, EventArgs e) 
    { 
     Response.Write("<script>alert('test')</script>"); 
    } 

回答

1

當你動態地添加控制到你的頁面,你必須在任何後續請求(回發)上重新添加它們。您在Button1_OnClick中添加的按鈕不會在後續請求中自動重新創建(例如在回發中)。

還有很多關於此主題的類似問題,在這裏您可以找到詳細信息。有關示例,請使用以下的搜索:

+0

我應該做我的代碼behide? – 2009-08-20 11:13:09

0

確保您爲該按鈕指定了一個ID,並確保每次創建它時都是一樣的。

在CreateChildControls重載中創建控件,在響應另一個事件時添加一次控件不足以將其保留在頁面上。

你最好的賭注是怎麼回事是否需要創建或沒有按鍵被跟蹤:

bool CreateButton 
{ 
    get 
    { 
     if (ViewState["CreateButton"] == null) 
      return false; 

     return (bool)ViewState["CreateButton"]; 
    } 
    set 
    { 
     ViewState["CreateButton"] = value; 
    } 
} 

override void public CreateChildControls() 
{ 
    panel1.Controls.Clear(); 

    if (CreateButton) 
    { 
     Button btn = new Button(); 
     btn.Text = "Test button"; 
     btn.ID = "CreatedButton"; // Note the ID here... 
     Panel1.Controls.Add(btn); 
     btn.Click += new EventHandler(btn_Click); 
    } 
} 

protected void Button1_Click(object sender, EventArgs e) 
{ 
    CreateButton = true; 
    EnsureChildControls(); 
} 

void btn_Click(object sender, EventArgs e) 
{ 
    Response.Write("<script>alert('test')</script>"); 
} 

類似的東西應該爲你工作...