【发布时间】:2009-02-11 19:42:05
【问题描述】:
是否存在允许预加载回发事件的任何类型的事件。
我问的原因是我有一个控件,它可以在回发事件中向它添加同级控件,但是,当它加载回发时,为时已晚,无法将新控件添加到控件集合中。因此,控件永远不会正确更新。
谢谢!
【问题讨论】:
标签: asp.net events postback page-lifecycle
是否存在允许预加载回发事件的任何类型的事件。
我问的原因是我有一个控件,它可以在回发事件中向它添加同级控件,但是,当它加载回发时,为时已晚,无法将新控件添加到控件集合中。因此,控件永远不会正确更新。
谢谢!
【问题讨论】:
标签: asp.net events postback page-lifecycle
尝试 Init 事件。
【讨论】:
覆盖CreateChildControls(确保调用base!)。在您的回发事件处理程序中,确保您将应动态创建的控件列表存储在某处,因此当CreateChildControls 在下一轮生命周期的早期被调用时,它将重新创建构建在最后一个回发。
【讨论】:
这是一个快速破解。您可以随时在 init 中查询 __EventTarget 和/或提交按钮的值,并可以动态加载控件。
但这样做可能不合适,因为您的控制层次结构会改变并可能导致问题。
【讨论】:
如上所述,必须在页面 Init 事件期间添加动态控件,以便在页面的 Viewstate 中正确处理它们。您可能还想关闭页面的 Viewstate,因为如果控件发生更改,它可能会向您触发错误。
【讨论】:
如前所述,添加动态控件的正确位置是在 Init 事件中。 这是一篇包含更多信息的文章。
Dynamic Web Controls, Postbacks, and View State
要更好地了解 ASP .NET 页面生命周期,请参阅:
【讨论】: