【问题标题】:Dynamic button in asp.net - EventHandler is not firedasp.net 中的动态按钮 - 未触发 EventHandler
【发布时间】:2017-06-28 05:25:26
【问题描述】:

我从后面的代码创建了一个按钮:

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);
}  

当我单击按钮时,会出现回发(带有 Javascript 警报的 IsPostback),但不会触发 EventHandler。如果有线索的话,我可以说页面上可见的内容会消失。

我需要在自定义受保护的 void 方法中创建它。

【问题讨论】:

  • 也许你应该使用 JavaScript 而不是 C# 来实现这种动态。而且如果你使用MVC,实现动态也更容易。
  • @LeiYang 不知道 MVC。你能举个Javascript例子吗?问题是为列表中的每个项目创建了dynamicPanel。所以页面上有几个。
  • Webforms 已经过时了,它不是 Winform 所以现在最好从 MVC 开始。
  • @LeiYang 对不起,做不到。该网站已经在运行。这里的工作只是添加自定义功能。
  • @matt2605:您使用代码隐藏而不是在客户端编写事件处理程序的原因是什么?

标签: c# asp.net button dynamic


【解决方案1】:

你的代码对我来说有点奇怪,但是关于“当我点击按钮时,方法没有被触发”的问题:尝试将方法dynamicREGButton_Click()重命名为dynamicButton_Click()

我假设您的代码中已经有一个方法dynamicButton_Click();否则,您将无法编译。但是,您通过dynamicButton.Click += new EventHandler(...); 注册的方法就是您调用的方法。您向我们展示的代码在这方面不匹配。

【讨论】:

  • 我已经进行了编辑 dynamicREGButton_Click() 应该是 dynamicButton_Click()。你是对的,否则它不会编译。在正确设置代码之前,我只想让按钮先​​工作。
  • 我再次编辑它以澄清“解雇”的含义。
猜你喜欢
  • 1970-01-01
  • 2016-04-13
  • 2010-12-19
  • 2023-03-26
  • 1970-01-01
  • 2020-12-25
  • 1970-01-01
  • 2013-07-02
  • 2016-08-02
相关资源
最近更新 更多