2017-02-10 60 views
0

我從後面的代碼創建一個按鈕:動態按鈕不起作用

Panel dynamicPanel = new Panel(); 
Button dynamicButton = new Button(); 
dynamicButton.Text = "View";    
dynamicButton.Click += new EventHandler(dynamicButton_Click); 
dynamicPanel.Controls.Add(dynamicButton); 
dynamicDiv.Controls.Add(dynamicPanel); 

OnClick方法:

protected void dynamicButton_Click(object sender, EventArgs e) 
{ 
    Response.Write("view button response"); 
    string script = "alert(\"view clicked.\");"; 
    ScriptManager.RegisterStartupScript(this, GetType(), 
     "ServerControlScript", script, true); 
} 

當我按一下按鈕,就回發(用的IsPostBack Javascript警報),但EventHandler沒有被解僱。如果這是線索,我可以說在頁面上顯示的內容會消失。

我需要在自定義保護的無效方法中創建它。

+2

也許你應該使用JavaScript而不是C#來實現這樣的動態。如果你使用MVC,實現動態也更容易。 –

+0

@LeiYang不知道MVC。你能舉出Javascript例子嗎?問題是dynamicPanel是爲列表中的每個項目創建的。所以在頁面上有幾個。 – matt2605

+0

Webforms已經過時,現在不是Winform,所以最好從MVC開始。 –

回答

1

您的代碼對我來說看起來有點奇怪,但對於問題「當我單擊該按鈕時,該方法未被觸發」:嘗試將方法dynamicREGButton_Click()重命名爲dynamicButton_Click()

我假設你已經在你的代碼中有一個方法dynamicButton_Click();否則,你無法編譯。但是,您通過dynamicButton.Click += new EventHandler(...);註冊的方法是您調用的方法。您向我們展示的代碼在這方面不符。

+0

我已經編輯dynamicREGButton_Click()應該是dynamicButton_Click()。你說得對,它不會另外編譯。我只是想讓按鈕在我正確設置代碼之前先工作。 – matt2605

+0

我再次編輯它以澄清「解僱」的含義。 – matt2605