質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

Q&A

1回答

15239閲覧

ドロップダウンリストで「選択した値の取得」と「選択された状態で画面に表示したい」

Umashio

総合スコア4

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

0グッド

0クリップ

投稿2020/11/10 05:16

編集2020/11/10 07:44

前提・実現したいこと

1.ドロップダウンリストで選択された値を取得したいと考えております。
2.また、選択状態で表示するにはどうしたらいいでしょうか?

追記:ドロップダウンリストのitemはDBから取得しています。
任意にセレクトして最終的にDBに保存するという流れです。
また、保存するだけでなく保存した内容の編集もします。

該当のソースコード

DBからデータを取得したあとのコードです。

aspx

1<asp:DropDownList ID="DropDownList1" runat="server" ClientIDMode="Static" AutoPostBack="True"> 2  <asp:ListItem>A</asp:ListItem> 3  <asp:ListItem>B</asp:ListItem> 4  <asp:ListItem>C</asp:ListItem> 5  <asp:ListItem>D</asp:ListItem> 6</asp:DropDownList>

1.選択された値を取得する

VB

1Protected Sub DropDownList1_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles DropDownList1.SelectedIndexChanged 2 MsgBox(String.Format("{0:s}が選択されました。(value={1:s})", DropDownList1.SelectedItem, DropDownList1.SelectedValue)) 3End Sub

実行結果
イメージ説明
このように選択した値を取得することができません。
何が原因で取得できないのか分かりません。

2.選択されている状態で表示する
追記:DBに保存した内容を編集したいのですが、DBからデータを取得した際に
例えば、Cを選択して保存します。その後、編集するときに編集ボタンか何かを押してDBデータをドロップダウンリストに表示するのですが
その時にCが選択されている状態で表示したいと考えております。

VB

1For i = 0 To DropDownList1.Items.Count - 1 2 'Aが選択されている状態と仮定して 3 If DropDownList1.SelectedItem.Text = "C" Then 4 DropDownList1.Items.FindByText("C").Selected = True 5 Exit For 6 End If 7Next

実行結果
何も選択されていない状態で表示されます。
イメージ説明
理想
イメージ説明

宜しくお願い致します。

補足情報(FW/ツールのバージョンなど)

Microsoft Visual Studio 2010
.NET Framework 4
ASP.Net Web Forms

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/11/10 07:21

ASP.NET Web アプリで MsgBox など使うのはやめましょう。例え開発時限定だとしても止めましょう。常識を疑われます。 「2.選択されている状態で表示する」のコードが意味不明です。初期画面表示からユーザーが C を選択したら AutoPostBack="True" なのでポストバックがかかって、応答が返ってきて再描画されたらその画面で C が選択状態になっていたら良いのであれば、何もする必要はないですけど?
Umashio

2020/11/10 07:27

質問を全体的に修正致します。 すみません。
退会済みユーザー

退会済みユーザー

2020/11/10 08:41 編集

相変わらず MsgBox を使ってますが、止めませんか? 言っても直らないのではあなたには関わる気がしなくなります。 デバッガを使ったそうですが、であればその画像に差し替えてください。
退会済みユーザー

退会済みユーザー

2020/11/18 01:21

質問者さん、無言になってしまいましたが、ギブアップしたとかで、このスレッドでの Q&A は不要になったということであれば、それはそれで構いませんので、その旨書いてこのスレッドはクローズしてください。 もし解決しているならその旨書いてこのスレッドはクローズしてください。 とにかく無言で放置は NG です。
退会済みユーザー

退会済みユーザー

2020/11/29 22:48

このスレッドでの Q&A は不要になったということであれば、それはそれで構いませんので、その旨書いてこのスレッドはクローズしてください。無言で放置は NG です。
guest

回答1

0

ASP.NET Web アプリで MsgBox など使うのはやめましょう。例え開発時限定だとしても止めましょう。デバッガを使いましょう。

「2.選択されている状態で表示する」のコードが意味不明です。初期画面表示からユーザーが C を選択したら AutoPostBack="True" なのでポストバックがかかって、応答が返ってきて再描画されたらその画面で C が選択状態になっていれば良いのであれば、何もする必要はないですけど?

質問のコードで、以下のようにして確認できます。コードは C# と VB.NET の違いはありますが本質的にところに違いは出ないはずです。

.aspx

(注:VB.NET と違って C# ではイベントににハンドラをアタッチするのに以下のようにする必要があります)

イメージ説明

.aspx.cs

初期画面からユーザーが C を選択してポストバックがかかったところ。ブレークポイントを設定して止めています。DropDownList1.SelectedItem、DropDownList1.SelectedValue いずれも値は期待通り取得できているのは分かりますか?

イメージ説明

結果

初期画面からユーザーが C を選択してポストバックがかかり、ポストバックの結果が再描画されたのが下の画像。コードは一切書かなくても C が選択された状態になります。

イメージ説明

投稿2020/11/10 07:39

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Umashio

2020/11/10 07:51 編集

時間差ですみません…質問を修正致しました。 1と2はドロップダウンリストに関しての内容なのですが、どちらも別の質問でした。 1の質問と2の質問でした。 何回も質問するのはどうかと思いましたので、まとめてしまいました。 ちなみに1に関してんなんですが、デバックで確認したのですが値は取れていませんでした。 分かりにくくてすみません。
退会済みユーザー

退会済みユーザー

2020/11/10 08:38

スレッドを分けてください。このスレッドでは 2 を削除。 新たに別のスレッドを立ててそれに 2 を書いてください。その際、もっと詳細情報を、コピペすれば問題を再現できるサンプルコードを書いてください。
退会済みユーザー

退会済みユーザー

2020/11/18 01:21

質問者さん、無言になってしまいましたが、ギブアップしたとかで、このスレッドでの Q&A は不要になったということであれば、それはそれで構いませんので、その旨書いてこのスレッドはクローズしてください。 もし解決しているならその旨書いてこのスレッドはクローズしてください。 とにかく無言で放置は NG です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問