ドロップダウン リストで選択した値に基づいて適切なユーザー コントロールを表示する Web ページを作成しようとしています。
基本的に、ページ レイアウトは次のとおりです。
ドロップ ダウン選択
<ドロップ ダウン選択 に基づいて作成されたユーザー コントロール >
半分は機能しています...選択が変更されると、コントロールが変更されます。OnInit() では、最後に選択されたコントロールを動的に作成します (OnInit では ViewState を使用できないため、その値はセッション状態に保存されます)。
ドロップダウン選択の変更が発生すると、古いユーザー コントロールを削除し、新しいユーザー コントロールを追加します。 問題は、選択変更イベントから新しいコントロールが追加されているため、最初のポストバックでユーザーからの変更を保存できないことです。最初のポストバックの後、選択されたコントロールは Change イベントではなく OnInit から作成され、状態はそれ以降、次の選択変更まで保存されます。
以下は SelectionChanged メソッドです。
protected void SelectionChanged(object sender, EventArgs e)
{
SelectedValue = int.Parse(DropDownList.SelectedValue); //Store in Session
Control userControl = GetSpecificUserControl(SelectedValue);
PlaceHolder1.Controls.Clear(); // Remove old user control
PlaceHolder1.Controls.Add(userControl);
}
SelectionChanged が発生した後にユーザーが新しいコントロールに加えた変更は、次のポストバックには保存されません。ただし、後続のポストバックは保存されます。その時点で、コントロールは OnInit() で作成されます。
コントロールが変更されたときに正しいポストバックと ViewState を強制する方法はありますか? コントロールが変更された後にページの再初期化を強制することは可能ですか?