次のように、Page_LoadイベントでChangeModeメソッドを使用してFormViewのCurrentModeを挿入モードに設定しています。
if(!Page.IsPostBack)
{
MyFormView.ChangeMode(FormViewMode.Insert);
}
FormViewの挿入テンプレート内に、AutoPostBackプロパティがtrueに設定されたDropDownListコントロールがあります。挿入テンプレート内には、他にもいくつかのDropDownListおよびTextBoxコントロールがあります。
DropDownListの選択を変更してポストバックが発生するたびに、コントロールに入力されたすべての値が失われます。奇妙なことに、ChangeModeを使用して、最初のページの読み込み後いつでもFormViewを挿入モードに設定しても、問題はありません。デバッガーを使用してコードをステップ実行しましたが、すべてが正しく行われているようですが、DropDownListのイベントハンドラーが実行された後、すべてがリセットされているようです。
ここで何が起こっているのですか?
更新:FormViewがrunat="server"およびenableviewstate="false"のdivタグ内にあることに気付きました。コンテナdivのビューステートを有効にすると、わずかに異なる動作が見られ始めました。FormViewは、最初のポストバック後も値を保持しませんが、後続のポストバックは正常に機能し、値は保持されます。
任意のアイデアをいただければ幸いです。