Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何为动态生成的按钮添加EventHandler_C#_Asp.net_Button_Event Handling - Fatal编程技术网

C# 如何为动态生成的按钮添加EventHandler

C# 如何为动态生成的按钮添加EventHandler,c#,asp.net,button,event-handling,C#,Asp.net,Button,Event Handling,这与这些问题非常相似,但它们似乎对我没有帮助(将在下面解释原因): 我正在创建一个C#aspx页面。该页面获取一组数据,然后从中构建一个表。表中的一列包含一个按钮,该按钮在构建数据时动态创建(因为按钮的操作依赖于表中的数据) Default.aspx <body> <form id="form1" runat="server"> <div> <asp:Table ID="tblData" runat="server"&g

这与这些问题非常相似,但它们似乎对我没有帮助(将在下面解释原因):

我正在创建一个C#aspx页面。该页面获取一组数据,然后从中构建一个表。表中的一列包含一个按钮,该按钮在构建数据时动态创建(因为按钮的操作依赖于表中的数据)

Default.aspx

<body>
  <form id="form1" runat="server">
    <div>
      <asp:Table ID="tblData" runat="server"></asp:Table>
    </div>
  </form>
</body>
这就是我绊倒的地方。我知道我的EventHandler没有被触发,因为它需要移到Page_Load方法。但是,如果我将btn1创建和EventHandler移到Page_Load,我将无法再在Build_表中访问它们


我看到的所有代码示例要么在ASPX页面中静态添加了btn1,要么在页面加载中动态创建了btn1。我想要完成的任务的最佳方式是什么?

在绑定事件之前,使用ID创建按钮:

Button btn1 = new Button();
btn1.ID = "btnMyButton";
btn1.Click += new EventHandler(this.btn1_Click);

确保每个按钮都有一个唯一的ID。此外,我会亲自将代码移动到
Page\u Init
,而不是
Page\u Load

我运行了您的代码,代码正常工作,事件处理程序不会触发任何问题。你有没有验证过你的处理程序正在开火,但当它在做“惊人的事情”的时候,发生了一些不好的事情?
Button btn1 = new Button();
btn1.ID = "btnMyButton";
btn1.Click += new EventHandler(this.btn1_Click);