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 アプリケーションを作成します。以下のコードを記述します。
<%@ 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>
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"が選択された状態でページが表示されます。