2009-08-23 13 views
4

asp.net DropDownListがEnableViewState = falseに設定されている場合、DropDownList.SelectedItemはnullを返します。asp.net DropDownListの 'EnableViewState = false'

次に、EnableViewState = falseを維持しながら、そのDropDownListのSelectedItemを取得するためにどのようなテクニックを使用できますか?

答えて

7
Request.Form[yourDropDownList.UniqueID] 

一意IDが のClientID戻る「ctl00_ContentMain_ddlCountry」と「ctl00 $ ContentMain $ ddlCountry」を返し

一意IDは、ポストバックフォーム名で使用されるHTMLフォームの名前に挿入されています。

2
string selectedValue = Request.Form["MyDropDownList"]; 
4

私の推測では、問題が手動で分離コードファイルにドロップダウンリストをデータバインディングしているということであるということです。データバインディングをPage_Load()からPage_Init()に移動すると役立ちます。

私の意見では、より良い解決策は、ObjectDataSourceを使用してDropDownListの値を入力することです。そうすれば、ページライフサイクルの正しい時間を値でロードしていることを確信できます。

+0

Jan、同様の状況があり、何らかの理由でRadComboBoxがポストバック時にその値を失っています。私はObjectDataSourceを使用していて、ページライフサイクルの間に正しいポイントでバインディングを処理すると常に考えていたので、なぜこれが起こっているのか分かりません。何かご意見は? – Jacques

+0

申し訳ありませんが、ジャック、私はあなたのお手伝いができません。通常のDropDownListを使って簡単にテストできます。これがうまくいくと、問題はコントロール内にある可能性があります。さもなければスタックオーバーフローについてここでお試しください。 :) –

+0

あなたは仕事の時間を節約しました。ありがとう! – buzibuzi

1

私の解決策はVS2010です。 1. EnableViewStateをfalseに設定します。 2.ドロップダウンリストボックスをsqldataadapterにバインドします。

前に: EnableViewStateをfalseに設定した後、リストボックスをすべてのポストバックでリロードする必要がありました。これはうまくいった。しかし、値がリストから選択された最初の時点では、SelectedIndexChangedイベントが発生しましたが、selectecitem.Valueは変更されませんでした( "0"のままです)。 2回目に値がリストから選択されたとき、selectecitem.Valueは正しいものでした。

関連する問題