我整理了一个简单的表单来突出动态表单的概念。我需要做的是当用户点击“添加”按钮时向页面添加一个控件。
我现在有一个简单的计数器,用于存储创建的控件数量,单击该按钮时会增加。
起初我以为它就像在事件处理程序上调用RecreateChildControls(该类继承自CompositeControl)一样简单。这确实会根据递增的值创建新控件,但所有控件状态都会丢失。我假设这是因为事件已经在Init& amp;加载阶段。
还有其他办法吗?我可以通过检查Init事件的回发值来使它工作,但这似乎有点hacky。
答案 0 :(得分:1)
这会根据递增的值创建新控件,但所有控件状态都会丢失。
你在page life cycle中调用该函数的时间太晚了。状态应用于“加载”阶段的控件,因此如果在该阶段之前未创建控件,则状态将不会恢复,因为控件在尝试时不存在申请国家。
您需要在Page的Init事件中创建控件。
就个人而言,我不是ASP.Net中动态控件的粉丝。他们有自己的位置,但更多时候我会选择合适的最大允许控件数,最初将它们 all 放在页面上,并且只根据需要启用/禁用/隐藏/显示它们。