Asp.Net:动态创建的控件在第一次PostBack后停止工作

时间:2014-11-06 11:23:19

标签: asp.net dynamic controls postback

我有一个页面,可以在Page_Load处理程序中动态创建列表,按钮和文本字段。单击该按钮时,文本框中的文本将添加到列表中,并通过清除页面的控件集合然后重新添加所有必需的控件来重新创建所有内容。 所以基本上,按钮会为每个Postback创建两次(首先在Page_Load中,然后在Button_Click处理程序中)。

这仅适用于第一个PostBack。如果再次尝试,则永远不会调用Button_Click处理程序(尽管动态控件在PostBack上重新创建)。
我在这里错过了什么? Button_Click事件是否仍然可以连接到第一个按钮(通过Controls.Clear()丢弃的按钮)?

2 个答案:

答案 0 :(得分:0)

Page_Load来不及创建按钮;它应该在Page init或preinit中。如果你读了按钮,清除它之后,你也必须读取事件处理程序。

答案 1 :(得分:0)

我终于弄明白问题的原因是:当多次创建控件时,事件处理程序(例如Button.Click)也会多次注册。我不知道为什么,但这会导致所有人停止工作。换句话说,处理按钮的事件会以某种方式干扰实际按钮的事件 我通过确保处理程序只注册一次(在Page_Load中)来解决这个问题。