2017-02-10 58 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