この形式のマークアップがあります:-
<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" などの "出力" 関数を使用してカスタム構築されたクラスが取り込まれます。
UpdatePanel にデータを入力するいくつかの連続する DataGrid コントロールで操作をテストすると、これは正常に機能します。同様に、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 に表示できるようにするにはどうすればよいですか?
ありがとう。