DOBON.NET DOBON.NETプログラミング掲示板過去ログ

DoropDownListの情報を得るには

環境/言語:[win2k VB.NET .NET Framework2.0]
分類:[ASP.NET]

DropDownListの情報を得るにはどう記述すれば良いですか?

DataGridとかは使用してません。
まったくの素のDropDownListです。
「DropDownList」で検索しても知りたい情報検出されなかったので…

コマンドボタン押下時イベント ******

'DropDownListで選択されている値を取得

よろしくお願いいたしますm(__)m
2006/05/10(Wed) 18:50:26 編集(投稿者)

■No15703に返信(SAKIさんの記事)
> DropDownListの情報を得るにはどう記述すれば良いですか?

System.Web.UI.WebControls.DropDownListであれば、

 DropDownList.SelectedItem.Value
 DropDownList.SelectedItem.Text

から値を取得してみてください。


> DropDownList.SelectedItem.Value
> DropDownList.SelectedItem.Text

申し訳ありませんが、これをどこに記述したらよいのでしょう…。
コマンドボタン_Clickイベントに記述したんですけど、
データが取得できてないみたいです。

********************************************************************
Protected Sub CommandButton_Click(ByVal sender As Object, _
ByVal e As System.EventArgs)

Label.Text = DropDownList.SelectedItem.Value

End Sub
お世話になります。

■No15708に返信(SAKIさんの記事)
DropDownList には値が確実に設定されていますか?
また、どのように設定していますか?

以下のようなコードで、選択した値が取得出来ると思います。
(DataSource を使わない方法)
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  ' ページを初期化するユーザー コードをここに挿入します。
  If Not IsPostBack Then
    Me.DropDownList1.Items.Clear()
    Me.DropDownList1.Items.Add("あああ")
    Me.DropDownList1.Items.Add("いいい")
  End If
End Sub


Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
  Me.Label1.Text = Me.DropDownList1.SelectedItem.Value
End Sub
>なおこ(・∀・)さん
そっちかもしれませんね。

なおこ(・∀・)さんもおっしゃっていますが、
ページロードのたびにDropDownListのアイテムを作成している場合、
SelectedItemを取得できません。2回目のページロード時には
ListItemを作り直さないようにしてみてください。
(アイテムを下のように静的に配置したことを
 想定して話を進めてしまいました。)

<asp:DropDownList id="DropDownList1" style=""
 runat="server" Width="152px" AutoPostBack="True">
 <asp:ListItem Value="ALL">すべて</asp:ListItem>
 <asp:ListItem Value="L">左側のみ</asp:ListItem>
 <asp:ListItem Value="R">右側のみ</asp:ListItem>
</asp:DropDownList>
> DropDownList には値が確実に設定されていますか?
> また、どのように設定していますか?

出来ました!Mooさん、なおこ(・∀・)さんありがとうございます。

DropDownList_OnLoadイベントで値を設定してましたので、それをPage_Loadイベント
にお引越ししたところ、正常に値が取得できました。わ〜い。

一応、正常に出来たコードを書いておきます。恥ずかしい〜…

Sub Page_Load(sender As Object, e As EventArgs)
If Not IsPostBack Then
Get_DropDownList()
End If
End Sub

Sub Get_DropDownList()
Dim con As New OleDbConnection("Connection_Strings")
Dim cmd As OleDbCommand
Dim sql As String

sql = "SELECT ID, Name FROM Table_Name ORDER BY ID"
cmd = New OleDbCommand(sql, con)
con.Open()
Dim dr As OleDbDataReader = cmd.ExecuteReader()
With DropDownList
.DataSource = dr
.DataTextField = "Name"
.DataValueField = "ID"
.DataBind()
.Items.Insert(0, "")
End With
dr.Close()
con.Close()
End Sub

Protected Sub Button_Click(ByVal sender As Object, ByVal _
e As System.EventArgs)
Label1.Text = DropDownList.SelectedItem.Text '←"Name"
Label2.Text = DropDownList.SelectedItem.Value '←"ID"
End Sub
あー、解決しました。
チェックするの忘れてた…
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板