后,我在这个格式标记: -加载不同的控件在有条件的UpdatePanel回发
<asp:UpdatePanel runat="server" id="UpdatePanelList" UpdateMode="conditional">
<ContentTemplate>
<asp:ListView></asp:ListView>
</ContentTemplate>
</asp:UpdatePanel>
<asp:UpdatePanel runat="server" ID="UpdatePanelMain" UpdateMode="Conditional">
<ContentTemplate />
</asp:UpdatePanel>
在这个更新面板,如果从数据库中的记录,可以发现一个DataGrid控件(标签和下拉控件)应该显示。如果不是HtmlGenericControl DIV控件应显示相关消息,要求用户创建记录。这两个控件都是动态创建的,使用“输出”功能(如“ToString”)自定义类来填充这些控件。
如果我测试了几个连续的DataGrid控件填充UpdatePanel的操作,这可以正常工作。同样,HtmlGenericControl DIV也按照预期的方式填充多个连续。
然而,当我测试的其他控制类型来填充的UpdatePanel,这个工程上的第一个实例,但是任何附加回发来填充UpdatePanel的失败,一个对话框提示:
Failed to load viewstate. The control tree into which viewstate is being
loaded must match the control tree that was used to save viewstate during
the previous request. For example, when adding controls dynamically, the
controls added during a post-back must match the type and position of the
controls added during the initial request.
我被领相信UpdatePanel控件在这个实例中控制了动态控件的视图状态。
如何恢复视图状态以允许在同一个UpdatePanel中显示多种类型的控件 ?
谢谢。