C# asp.net中的动态按钮-未激发EventHandler
我从代码隐藏创建了一个按钮:C# asp.net中的动态按钮-未激发EventHandler,c#,asp.net,button,dynamic,C#,Asp.net,Button,Dynamic,我从代码隐藏创建了一个按钮: Panel dynamicPanel = new Panel(); Button dynamicButton = new Button(); dynamicButton.Text = "View"; dynamicButton.Click += new EventHandler(dynamicButton_Click); dynamicPanel.Controls.Add(dynamicButton); dynamicDiv.Controls
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 with Javascript alert),但不会触发EventHandler。我可以说,如果这是一个线索,页面上可见的内容就会消失
我需要在一个自定义的受保护的void方法中创建它。您的代码在我看来有点奇怪,但对于“当我单击按钮时,该方法未被激发”的问题:尝试将该方法重命名为
dynamicButton\u click()
到dynamicButton\u click()
我假设您的代码中已经有一个方法
dynamicButton\u Click()
;否则,您无法编译。但是,您通过dynamicButton.Click+=neweventhandler(…)注册的方法
是您调用的方法。您向我们展示的代码在这方面不匹配。也许您应该使用JavaScript而不是C来实现这种动态。如果你使用MVC,实现动态也更容易。@LeiYang不懂MVC。你能举个Javascript的例子吗?问题是为列表中的每个项目创建了dynamicPanel。页面上有几个这样的页面。Webforms已经过时了,它不是Winform,所以最好现在就从MVC开始。@LeiYang抱歉,不能这样做。该网站已在运行。这里的工作只是添加自定义功能。@matt2605:为什么您使用代码隐藏而不是在客户端编写事件处理程序?我已经将编辑dynamicButton_Click()设置为dynamicButton_Click()。你是对的,否则它不会编译。我只想在正确设置代码之前先让按钮工作。我再次编辑了它以澄清“被解雇”的含义。