[C#] DropDownList で選択されている項目を取得する

このページのタグ:[C#] [ASP.NET] [DropDownList]
ASP.NETのDropDownList で選択されている項目を取得するコードを紹介します。

概要

DropDownListで選択されている項目のテキストを取得する場合は、DropDownList.SelectedItemで取得します。また、選択項目の値(valueプロパティの値)を取得する場合は、DropDownList.SelectedValueで取得できます。

サンプルプログラム

UI

下図のUIを作成します。ASP.NETプロジェクトを作成し、Webフォームを作成します。フォームにDropDownList,Button,Labelを配置します。

aspxファイルのコード

aspxファイルのコードは下記になります。

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="GetItem.aspx.cs" Inherits="DropDownListDemo.GetItem" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      <asp:DropDownList ID="DropDownList1" runat="server">
      </asp:DropDownList>
      <div>
        <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
      </div>
      <div><asp:Label ID="Label1" runat="server" Text="Label"></asp:Label></div>
    </div>
    </form>
</body>
</html>

コード

以下のコードを記述します。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace DropDownListDemo
{
  public partial class GetItem : System.Web.UI.Page
  {
    protected void Page_Load(object sender, EventArgs e)
    {
      if (IsPostBack == false) {
        ListItem li = new ListItem("ぺんぎん", "Penguin");
        DropDownList1.Items.Add(li);
        li = new ListItem("ネコ", "Cat");
        DropDownList1.Items.Add(li);
        li = new ListItem("パンダ", "Panda");
        DropDownList1.Items.Add(li);
        li = new ListItem("コアラ", "Koala");
        DropDownList1.Items.Add(li);
        li = new ListItem("ビーバー", "Beaver");
        DropDownList1.Items.Add(li);
      }
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
      Label1.Text = string.Format("{0:s}が選択されました。(value={1:s})",
        DropDownList1.SelectedItem, DropDownList1.SelectedValue); 
    }
  }
}

解説

LoadイベントのコードはDropDownListへの要素の追加処理になります。詳細はこちらの記事を参照してください。


protected void Button1_Click(object sender, EventArgs e)
{
  Label1.Text = string.Format("{0:s}が選択されました。(value={1:s})",
    DropDownList1.SelectedItem, DropDownList1.SelectedValue); 
}
上記のButton1のクリックイベントでは、DropDownListで選択されている項目の値とテキストを取得しラベルに表示しています。

実行結果

プロジェクトを実行します。Webブラウザが起動し、下図の画面が表示されます。


[Button]をクリックします。ラベルにDropDownListで選択されている項目とValueの値が表示されます。


ドロップダウンリストを開き別の項目を選択します。


[Button]をクリックすると、DropDownListでその時点で選択されている項目とvalueの値が表示されます。



補足と注意


protected void Page_Load(object sender, EventArgs e)
{
  ListItem li = new ListItem("ぺんぎん", "Penguin");
  DropDownList1.Items.Add(li);
  li = new ListItem("ネコ", "Cat");
  DropDownList1.Items.Add(li);
  li = new ListItem("パンダ", "Panda");
  DropDownList1.Items.Add(li);
  li = new ListItem("コアラ", "Koala");
  DropDownList1.Items.Add(li);
  li = new ListItem("ビーバー", "Beaver");
  DropDownList1.Items.Add(li);
}
Loadイベントで上記のコードのように、IsPostBackプロパティの確認を行わない場合、ボタンクリックでページが切り替わるたびにDropDownListに項目が追加されます。そのため、ボタンを数回クリックするとドロップダウンリストが下図のような状態になってしまします。IsPostBackプロパティを確認し、Falseの場合のみDropDownListに項目を追加する必要があります。

登録日 :2014-04-15    最終更新日 :2014-04-21
このページのタグ:[C#] [ASP.NET] [DropDownList]
Japanese
プライバシー    iPentecについて
iPentec all rights reserverd. (ISDC)