在动态控制的回发事件中,asp.net应用程序中缺少动态控件

时间:2012-11-30 07:53:51

标签: asp.net

嗨我正在按钮点击事件中添加动态控件,在我有下拉控件,我正在提出一个事件以下拉选择的索引更改,我自动发布回true,当我选择新项目时从下拉,我失去了所有的动态控制

2 个答案:

答案 0 :(得分:1)

继承 IPostBackDataHandler 接口的每个服务器控件都有一个处理回发数据的 LoadPostData 方法。当控件由类(页面,表单,占位符,控件等)实现时,该类调用 LoadPostData 方法并传递发布的数据和键以保持控制状态

需要做的就是在回发期间每次在页面加载事件之前或之内重新实例化/重新初始化动态控件,并将此控件添加到页面/表单/占位符。然后,通过父控件调用LoadPostData方法,将自动将发布的数据分配给控件,并且将触发控件事件。

检查文章以及如何编写动态控制代码 - 的 How to maintain dynamic control events, data during postback in asp.net

答案 1 :(得分:0)

您必须在每次回发时重新创建所有动态创建的控件(最迟在加载事件中)。 您还必须确保它们获得与以前相同的ID以触发事件并维护ViewState。

如果您知道要创建的控件数量(可以存储在ViewState中),您可以通过将其附加到control-id来从计数器变量中获取ID。然后,您可以在页面的init事件中使用正确的ID重新创建它们。

可推荐的读物:

或者您使用内置Data-Bound Control之类的Repeater自动执行此操作。您只需设置DataSource并致电DataBind()。

以下是关于实施的类似问题的答案: