• 締切済み

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 -----------------------

みんなの回答

noname#259269
noname#259269
回答No.2

>[SelectedIndex][SelectedValue]など色々といじってはみましたが、 タイミングの問題と思いますが。。。どのタイミングで設定しようとしているのでしょうか? Page_PreRenderComplete 内でやってますか? DropDownList の DataBound イベントは、Page_PreRender より後に実行されるので、Page_Load とか Page_PreRender とかで設定しようとしても、設定した後選択肢が初期化されることになります。

aset_crue
質問者

補足

おっしゃる通りにPage_LoadやPage_PreRenderなどで試していました・・・ これじゃあタイミングとしてダメなんですね。 どのタイミングでやればいいのでしょうか? すいません。ご教授頂きたいです。

全文を見る
すると、全ての回答が全文表示されます。
noname#259269
noname#259269
回答No.1

SelectedValue か SelectedIndex 使えばよいだけでは? PostBack のたびに、DropDownList の選択肢を DB から取得しなおして初期化してしまっていて、その前に SelectedValue の設定をしているからうまく行ってないとか。 コードを提示すれば適切なアドバイスが得られるかもです。

aset_crue
質問者

補足

---------------------------------------------------------------- <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]など色々といじってはみましたが、 うまくいきません・・・・ アドバイス頂きたいです。 お願いいたします。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ASP.Net DropDownList 不明値

    大変お世話になります。 ASP.Net 初心者でございます。 データソースのある GridView の1つの項目が DropDownList になっております。 このDropDownList のデータの元になるテーブルがあるのですが、 運営上の問題で一部のデータを消す事があります。 そうなると、本データ上にはある過去の値が、現在の DropDownList のデータには無い事があるのです。そういうデータを GridView で表示すると、次のような・・・ 【項目一覧に存在しないため、'DropDownList1' に SelectedValue を指定することは無効です】 というエラーになってしまうのですが、何か良い方法はないでしょうか? DropDownList のデータ 1:青森 2:山形 3:岩手 4:NewYork ・・・・・ このデータは既にDropDownList のテーブル上にはありません。 本データの DropDownList 項目のデータ 1:青森 2:山形 3:岩手 -------------------------------------------------- 4:NewYork ・・・・・ このデータが出てくるとエラーになります。(このデータは本データにある) -------------------------------------------------- こういう場合は、本データにあって、DropDownList データには無いデータをあらかじめ取得して、 AppendDataBoundItems か何かで、追加する必要があるのでしょうか? 何卒よろしくお願いいたします。

  • DropDownList に指定した値を表示したい

    <開発環境>asp.net A画面のgridviewで指定されたkeyの詳細情報をB画面のgridviewで表示しています。 B画面ではgridviewのTemplateFieldにDropDownListを作成しています。 DropDownListはSqlDataSourceをバインドさせているのですが、A画面でデータを選択し 修正ボタンを押下した時にB画面のDropDownListに初期表示する方法がわかりません。 どのようにすれば表示できるのでしょうか? ちなみにA画面でKBNNAMEが"愛知県"だとB画面で"愛知県"と表示したいです。 -------------------------------------------------------------------------------- <asp:GridView ID="grdList" CssClass="list" runat="server" AutoGenerateColumns="False" DataSourceID="sqldsList"> <Columns> <ItemTemplate> <asp:DropDownList CssClass="cnbstr" ID="cnbBB_KBN" runat="server" DataSourceID="sqldscnb1" DataTextField="KBNNAME" DataValueField="KBNORDER" AutoPostBack="True"></asp:DropDownList> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> -------------------------------------------------------------------------------- <asp:SqlDataSource ID="sqldscnb1" runat="server" ConnectionString="<%$ ConnectionStrings:InformationUseConnectionString %>" SelectCommand="SELECT KBNORDER, KBNNAME FROM table1 WHERE (NO = @NO) AND (ITEMNO = @ITEMNO) ORDER BY KBNORDER" DeleteCommandType="StoredProcedure"> <SelectParameters> <asp:SessionParameter Name="NO" SessionField="BBList_NO" Size="2" Type="String" /> <asp:Parameter DefaultValue="01" Name="ITEMNO" Size="2" Type="String" /> </SelectParameters> </asp:SqlDataSource>

  • 初回表示時の処理キャンセル

    現在、Visual Web Developer 2008 Express Edition .NET Framework3.5にて勉強中です。 データベースから取得したデータを表示するために、 default.aspxページ内に、 ・DropDownList ・DataSource1(DropDownList用のデータ取得) ・GridView ・DataSource2(GridView用のデータ取得) ・Button を配置しています。 DropDownListにて検索条件を設定し、Buttonにて検索実行 DataSource2の検索条件に、DropDownListの値をパラメータとして渡して GridViewにて表示としています。 この状態でページを表示した際に、初回は検索条件が設定されていないので 全レコードがGridViewに表示されてしまいます。 希望する動作としては、初回表示の場合はDropDownListの値を設定するのみで GridViewの表示(DataSource2のSelect文の実行)をしないで、Buttonを 押したときのみ、検索→表示を実行したいのですが、どうすればよろしいのでしょうか? ページのLoad時にIsPostBackを調べて何かするのかな?と思っているのですが、 DataSourceの処理を制御する方法が分かりません。 (制御できるのかどうかも分かりません。) どなたか、ご教示お願いします。

  • FormView内に設置したDropDownList1を選択すると同テ

    FormView内に設置したDropDownList1を選択すると同テーブルの他項目を表示したい ASPの初心者です。VisualStadioDeveloper2008(VB)とSQLServer2008の組み合わせで 質問です。 FormView内に設置したDropDownList1を選択すると同テーブルの他項目を表示されるようにしたいです。 また、EditItemTempleteでもDropDownList1を選択すると同テーブル内容を確認できるようにしたいと思ってます。 以下は例です。 例) テーブルA 社員ID,社員名、社員カナ、社員携帯番号 sqldatasouce1にテーブルAをSELECT * FROM [テーブルA]としています。 また社員名をDropDownList1で選択できるようにしています。(下記はEditItemTemplete) <asp:DropDownList ID="DropDownList1" runat="server" AppendDataBoundItems="True" DataSourceID="SqlDataSource1" DataTextField="社員名" DataValueField="社員ID" SelectedValue='<%# Bind("社員ID") %>' AutoPostBack="True"></asp:DropDownList> FormView内のDropDownList1の社員名を選択すると他ラベルにて社員カナ、社員携帯などが表示されるようにしたいです。 更新時に、社員名を選択すれば、他情報が確認できるようにしたいです。(テーブルAは他でメンテする仕様です) GOOGLE等で調べてみましたが、DROPDOWNLIST同士を連携する記事は見つけることはできましたが、上記にような記事を探すことができませんでした。(簡単すぎて書いてないだけでしょうか、、?) 以上の点 教えていただけますでしょうか?

  • ボタンクリック処理前にDropDownListの選択内容確認の仕方は?

    ボタンをクリックする前に、DropDownListの値を確認するダイアログのようなものを出したいと考えています。 OnClientClickプロパティに"return confirm('これでよろしいですか?')" のように埋め込む方法は分かっていますが、 DropDownListで選択されている値を取り出して return confirm('" + ddlSelect.SelectedValue + "でよろしいですか?')" のようにするとそのまま出力されてしまい、中身を取り出せません。 何か、方法もしくは他の方法で、DropDownListの値を一言注意できる方法があれば教えて下さい。 環境:VWD2008 ASP.NET2.0

  • ASP.Net DropDownList表値取得2

    ASP.Net DropDownList 表値取得 大変お世話になります。 DropDownList の DataTextField のリストに出てくる値を取得したいのですが、フィールド名しか取得できません。サイトでくぐっても、SelectedIndex から取得できましたとの回答はあったのですが、実際どうやったら良いかわかりません。 DataTextField.text や DataTextField.Value のようなやりかたがあればいいのですが、 よろしくお願いいたします。 なお、リストに表示してある値が変更される場合があるのです。 ですが、SelectValue での集計もあるので、SelectValue と DataText は同じにできないのです。 できれば DataTextField の項目名ではなく、値そのものを取得できる方法をお教え下さいませ。

  • GridViewで複数のDropDownListを連携表示しようとして

    GridViewで複数のDropDownListを連携表示しようとしています。 操作全般はソースコード(*.aspx.cs)から行い、動的な処理を行えるようにしたいのですが、 DropDownList同士のバインドのやり方が分からなくて、困っています。 具体的には、ListAのデータ一覧から、ListBのデータ一覧を表示するといった処理になります。 また、GridView上でのDropDownListの描画は、ライブラリにメソッドを組み込み、そこから呼び出しています。 ライブラリの宣言文は以下の通りです。 /// <summary> /// 子コントロールとテンプレートが属する Control オブジェクトを定義します。 /// </summary> /// <param name="container"></param> public void InstantiateIn(System.Web.UI.Control container) { System.Web.UI.WebControls.DropDownList wddlFrame = new System.Web.UI.WebControls.DropDownList(); wddlFrame.AutoPostBack = false; wddlFrame.CausesValidation = false; wddlFrame.ID = _IDname; wddlFrame.EnableViewState = true; wddlFrame.DataBinding += new EventHandler(wddlFrame_DataBinding); wddlFrame.Style.Add("width", this._listWidth.ToString() + "px"); container.Controls.Add(wddlFrame); } /// <summary> /// コントロールがデータソースに連結すると発生します。 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void wddlFrame_DataBinding(object sender, EventArgs e) { System.Web.UI.WebControls.DropDownList wddlFrame = (System.Web.UI.WebControls.DropDownList)sender; GridViewRow container = (GridViewRow)wddlFrame.NamingContainer; if (this._listItems != null) { wddlFrame.Items.AddRange(this._listItems); } } ASPを弄るのは初めてで、また既存のデータをカスタマイズしているだけの為、 知らずに使っている部分も多くあり、完全に手詰まり状態となっています。 分かる方がおられましたらご教授お願いします。 上記ソースから察せられるかと思いますが、使用している言語はC#になります。

  • GridViewのEditTemplate

    すみません。改めて質問させていただきます。 GridViewのEditTemplateにDropDownListが配置されています。 更新したときに、そのDropDownListの値を取得する方法をご教授頂きたいです。 言語はVBです。以下のコードを書きましたが取得できません(Updatingイベントのとき)↓ Protected Sub GridView1_RowUpdating(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewUpdateEventArgs) Handles GridView1.RowUpdating MsgBox(GridView1.Rows(e.RowIndex).ToString) End Sub とりあえずメッセージボックスにドロップダウンリストの値を表示したいです。

  • GridView でコンボボックスの設定

    再質問をさせていただきます。 gridviewを作成しました。 -------------------------------------------------------------------------------- <asp:GridView ID="grdList" runat="server" DataSourceID="sqldsList"> <Columns> <asp:BoundField DataField="ITEMNO" HeaderText="ITEMNO"></asp:BoundField> <asp:TextBox ID="txtNAME" runat="server" Text='<%# Bind("ITEM_NAME") %>'></asp:TextBox> <ItemTemplate>   <asp:DropDownList CssClass="cnbstr" ID="cnb_KBN" runat="server"     DataSourceID="sqldscnb1" DataTextField="NAME" DataValueField="NO" AutoPostBack="True"></asp:DropDownList> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> -------------------------------------------------------------------------------- このコンボボックスに値を設定させたいのですが、ITEMNO="01"の時だけ、txtNAMEの値を初期表示したいと思っています。 RowDataBound、RowCreatedで可能かと思ったのですができずに困っています。 どなたかご教授お願いします。 Protected Sub grdList_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles grdList.RowDataBound   If e.Row.RowType = DataControlRowType.DataRow Then     IF DataBinder.Eval(e.Row.DataItem, "ITEMNO").ToString() = "01" THEN       Dim dlist As DropDownList = DirectCast(e.Row.FindControl("cnb_KBN"), DropDownList)       dlist.SelectedValue = "ITEM_NAME" ←こんな感じのことをしたい     ELSE       設定しない     END IF   End If End Sub

  • ファイルメーカーのフィールドにデフォルト値を設定したいのです

    教えてくださいませ。 ファイルメーカーのフィールドに値一覧で作成しました値がありデフォルトを設定してます。 例)今日 明日 明後日  デフォルト値:明日 しかし、新規データとして入力する場合しかこの機能が働きません。やりたいのはcsvでデータを取り込んだときにも自動で表示させたいのですが・・・ そんなことってできます? すいませんがおしえてくださいませm(_ _)m