ASP.NET WebFormのDropDownList の項目名、値から特定の項目を選択するコードと実行結果 - ListItemからインデックス番号を求める

DropDownList の項目名、値から特定の項目を選択するコードと実行結果を紹介します。

概要

DropDownListからアイテムを取得し、そのインデックス番号を求めたい場合があります。 たとえば、以下のコードで、DropDownListのアイテムを初期化する場合、初期化時に"5"の要素を選択させたいことがあります。

    protected void Page_Load(object sender, EventArgs e)
    {
        if (IsPostBack == false)
        {
            DropDownList1.Items.Add("1");
            DropDownList1.Items.Add("2");
            DropDownList1.Items.Add("3");
            DropDownList1.Items.Add("4");
            DropDownList1.Items.Add("5");
            DropDownList1.Items.Add("6");
            DropDownList1.Items.Add("7");
            DropDownList1.Items.Add("8");
            DropDownList1.Items.Add("9");
        }
    }


決め打ちで、以下のコード記述をしてもよいですが、"5"の文字を持つアイテムを取得して インデックス番号を求めたい場合があります。

    protected void Page_Load(object sender, EventArgs e)
    {
        if (IsPostBack == false)
        {
            DropDownList1.Items.Add("1");
            DropDownList1.Items.Add("2");
            DropDownList1.Items.Add("3");
            DropDownList1.Items.Add("4");
            DropDownList1.Items.Add("5");
            DropDownList1.Items.Add("6");
            DropDownList1.Items.Add("7");
            DropDownList1.Items.Add("8");
            DropDownList1.Items.Add("9");

            DropDownList1.SelectedIndex = 4;
        }
    }


この場合下記の記述をします。

    protected void Page_Load(object sender, EventArgs e)
    {
        if (IsPostBack == false)
        {
            DropDownList1.Items.Add("1");
            DropDownList1.Items.Add("2");
            DropDownList1.Items.Add("3");
            DropDownList1.Items.Add("4");
            DropDownList1.Items.Add("5");
            DropDownList1.Items.Add("6");
            DropDownList1.Items.Add("7");
            DropDownList1.Items.Add("8");
            DropDownList1.Items.Add("9");

            ListItem li = DropDownList1.Items.FindByText("5");
            int i = DropDownList1.Items.IndexOf(li);
            DropDownList1.SelectedIndex = i;
        }
    }


IndexOf()メソッドを使うことでListItemからインデックス番号を求めることができます。

実装例

コード

ASP.NET WebForm アプリケーションを作成します。以下のコードを記述します。

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

<!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>
  <h2>ドロップダウンリストボックス選択のデモ</h2>
    <form id="form1" runat="server">
        <div>
          <asp:DropDownList ID="DropDownList1" runat="server"></asp:DropDownList>
        </div>
    </form>
</body>
</html>

SelectItem.aspx.cs
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 SelectItem : System.Web.UI.Page
  {
    protected void Page_Load(object sender, EventArgs e)
    {
      if (IsPostBack == false) {
        DropDownList1.Items.Add("Item 1");
        DropDownList1.Items.Add("Item 2");
        DropDownList1.Items.Add("Item 3");
        DropDownList1.Items.Add("Item 4");
        DropDownList1.Items.Add("Item 5");
        DropDownList1.Items.Add("Item 6");
        DropDownList1.Items.Add("Item 7");
        DropDownList1.Items.Add("Item 8");
        DropDownList1.Items.Add("Item 9");

        ListItem li = DropDownList1.Items.FindByText("Item 5");
        int i = DropDownList1.Items.IndexOf(li);
        DropDownList1.SelectedIndex = i;
      }
    }
  }
}

解説

DropDownList1.Items.FindByText()メソッドを呼び出して、要素のキャプション文字列から、ListItemオブジェクトを取得します。 DropDownList1.Items.IndexOfメソッドを呼び出し、ListItemオブジェクトを与えることで、

ListItemからインデックス番号を求めることができます。

  ListItem li = DropDownList1.Items.FindByText("Item 5");
  int i = DropDownList1.Items.IndexOf(li);


インデックス番号を、SelectedIndex プロパティに代入し指定した要素を選択した状態にします。
  DropDownList1.SelectedIndex = i;

実行結果

プロジェクトを実行します。下図のページが表示されます。"Item 5"が選択された状態でページが表示されます。

ASP.NET WebFormのDropDownList の項目名、値から特定の項目を選択するコードと実行結果 - ListItemからインデックス番号を求める:画像1

このページのキーワード
  • ASP.NET WebFormのDropDownList の項目名、値から特定の項目を選択するコードと実行結果 - ListItemからインデックス番号を取得する
AuthorPortraitAlt
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
作成日: 2009-05-15
Copyright © 1995–2025 iPentec all rights reserverd.