ASP.NET在回发时添加控件

时间:2009-05-18 11:52:54

标签: asp.net dynamic user-controls controls

我整理了一个简单的表单来突出动态表单的概念。我需要做的是当用户点击“添加”按钮时向页面添加一个控件。

我现在有一个简单的计数器,用于存储创建的控件数量,单击该按钮时会增加。

起初我以为它就像在事件处理程序上调用RecreateChildControls(该类继承自CompositeControl)一样简单。这确实会根据递增的值创建新控件,但所有控件状态都会丢失。我假设这是因为事件已经在Init& amp;加载阶段。

还有其他办法吗?我可以通过检查Init事件的回发值来使它工作,但这似乎有点hacky。

1 个答案:

答案 0 :(得分:1)

  

这会根据递增的值创建新控件,但所有控件状态都会丢失。

你在page life cycle中调用该函数的时间太晚了。状态应用于“加载”阶段的控件,因此如果在该阶段之前未创建控件,则状态将不会恢复,因为控件在尝试时不存在申请国家。

您需要在Page的Init事件中创建控件。

就个人而言,我不是ASP.Net中动态控件的粉丝。他们有自己的位置,但更多时候我会选择合适的最大允许控件数,最初将它们 all 放在页面上,并且只根据需要启用/禁用/隐藏/显示它们。