我有一个具有多个更新面板的用户控件。
在Page上,我动态地将一个子用户控件加载到PlaceHolder (我每次都这样做,不检查回发)
我希望能够维护用户在子用户控件中所做更改的状态。(子用户控件与asp.net控件和其他自定义控件一起具有html控件)。
每当单击按钮A或B导致回发时,子用户控件就会失去状态。UpdatePanels的模式已设置为条件模式。
在OnPageLoad中,
将子控件加载到PlaceHolderA
我想防止这种情况发生。
下面是ASPX页面的HTML结构
<UpdatePanel1>
<UpdatePanelChild1>
<Button A>
<Button B>
</UpdatePanelChild1>
<UpdatePanelChild2>
<PlaceHolderA>
</UpdatePanelChild2>
发布于 2009-02-05 17:09:42
动态添加控件时,每次页面加载时都需要重新添加它们。我不得不解决类似的困难,我这样做有两种方式。在动态字段中添加动态字段时,我实际上将在用户单击以填充或自己添加该控件之前向页面添加一个隐藏控件。通过创建这种占位符,系统可以让tim正确地处理viewstate,从而保留用户的更改。我听到您提到的第二个问题是,chich更新面板更新可能会出现问题。可以将它们设置为条件,但在代码后面,如果需要从代码中触发更新,也可以在rpanels中触发。只是updatepanel#.update()
或者,您也可以将所有更新面板包装在另一个面板中,但我建议您不要这样做,因为它浪费了资源。
发布于 2009-02-10 16:42:34
看起来,您正在失去动态添加的子控件的ViewState。
这是因为在页面生命周期中添加它太晚了: ViewState是在Page.Load事件之前加载的。
尝试在Page.Init中添加您的子控件。
发布于 2009-01-29 15:49:03
您可以在控件中使用带有窗体runat服务器的ScriptManager,而可以使用更新面板。
这样你就没有后背了。
这里有一个很好的参考资料:http://www.asp.net/Ajax/Documentation/Live/overview/ScriptManagerOverview.aspx
欢迎光临。乔瑟马。http://www.learning-workshop.com
https://stackoverflow.com/questions/492139
复制相似问题