我有一个webform,其中在下拉列表的SelectedIndexChanged事件期间在Panel控件中生成一组控件。一切正常。
但是,当我在这些控件中输入值并单击我的提交按钮时,控件将与我输入的数据一起被删除。
我只能在SelectedIndexChanged事件中创建控件,因为这是我获取信息以生成动态控件的地方。
我想做的是将这些控件与我输入的数据一起显示,并使用我输入的数据做其他事情(就像它在WinForms中发生的那样。)
这可行吗?
谢谢!
答案 0 :(得分:2)
每次发生回发时,您都在使用页面类的新实例。在上一次回发期间添加到页面的动态控件在该回发的页面呈现给浏览器后立即转到垃圾收集器。您需要在每次回发时重新创建动态控件。
在Session或ViewState中保存“控制集”的数量,以便您可以在Page_Init期间使用适当的ID(例如,附带indexOfControl
)重新生成它们。
以下是一些其他信息:
ASP.NET Page Life Cycle Overview
答案 1 :(得分:0)
这是使Webforms看起来像Winforms失败的尝试之一。
使用Webforms,您需要完成何时创建控件的整个过程。我相信所有的控件都需要在PageLoad结束的某个时候重新创建。您可以使用一个或两个页面加载后的事件,但一般来说,PageLoad是一个安全的时间来创建控件。
实际上,在ASP.NET使用ViewState / Browser中的数据填充控件之前,需要创建控件。