- 締切済み
DropDownListの初期値の設定(C#)
DropDownListの初期値を設定する方法は、 何かありませんでしょうか? 車を一覧表示する画面(GridView)を作っております。 [メーカー][車種][カラー]をプルダウン選択して、 GridViewを絞り込みで一覧表示をします。 以下のような、 AutoPostBackでDBを取得して、連動したDropDownListを作りました。 ----------- ▼メーカー 1.TOYOTA 2.日産 3.SUZUKI 4.三菱 5.マツダ ----------- ▼車種(2.日産の場合) 1.リーフ 2.ティーダ 3.マーチ 4.セレナ ----------- ▼ボディカラー(1.リーフの場合) 1.白 2.黒 3.青 ここまではうまくできたのですが、この一覧画面を表示する際に、 ・ログインより日産の社員は、初期値として[日産]をデフォルト選択をしたい。 ・一度検索したプルダウンの値を、初期値としてデフォルト選択をしたい。 という事をしたいのです。 Sessionで値を保持してプルダウンのデフォルト値としたいのですが。 出来ません・・・ 何かいい方法はありませんでしょうか? AJAXを多用するなど方法は何でもよいのですが。 何かサンプルなどあればご紹介頂きたいです。 どうぞ宜しくお願い申し上げます。 ----------------------- Webアプリケーションです。 .Net Flamework4.0 C# Visual Basic 2010 SQL Server 2008 R2 -----------------------
- みんなの回答 (2)
- 専門家の回答
みんなの回答
>[SelectedIndex][SelectedValue]など色々といじってはみましたが、 タイミングの問題と思いますが。。。どのタイミングで設定しようとしているのでしょうか? Page_PreRenderComplete 内でやってますか? DropDownList の DataBound イベントは、Page_PreRender より後に実行されるので、Page_Load とか Page_PreRender とかで設定しようとしても、設定した後選択肢が初期化されることになります。
SelectedValue か SelectedIndex 使えばよいだけでは? PostBack のたびに、DropDownList の選択肢を DB から取得しなおして初期化してしまっていて、その前に SelectedValue の設定をしているからうまく行ってないとか。 コードを提示すれば適切なアドバイスが得られるかもです。
補足
---------------------------------------------------------------- <asp:DropDownList ID="Car" runat="server" AutoPostBack="True" DataSourceID="SqlDataSource3" DataTextField="Car" DataValueField="Car"> </asp:DropDownList>車種 <asp:SqlDataSource ~~DBへのSELECT文を記述~~ <SelectParameters> <asp:ControlParameter ControlID="Maker" Name="Maker" PropertyName="SelectedValue" /> <asp:SessionParameter DefaultValue="" Name="Car" SessionField="Car" Type="Int32" /> <asp:SessionParameter DefaultValue="" Name="BodyColor" SessionField="BodyColor" Type="string" /> </SelectParameters> </asp:SqlDataSource> ---------------------------------------------------------------- 実際に、車種のプルダウンの場合は以上のようなソースです。 なんとかできないかと、 [SelectedIndex][SelectedValue]など色々といじってはみましたが、 うまくいきません・・・・ アドバイス頂きたいです。 お願いいたします。
補足
おっしゃる通りにPage_LoadやPage_PreRenderなどで試していました・・・ これじゃあタイミングとしてダメなんですね。 どのタイミングでやればいいのでしょうか? すいません。ご教授頂きたいです。