web-dev-qa-db-ja.com

表示テキストを使用して、ASP.NETドロップダウンで選択した項目をどのように設定できますか?

ASP.NETドロップダウンがあり、データバインディングで入力しました。選択したいリストアイテムの表示テキストと一致するテキストがあります。私は明らかにSelectedText(getterのみ)を使用できず、インデックスがわからないため、SelectedIndexを使用できません。以下に示すように、私は現在、リスト全体を反復処理してアイテムを選択しています。

ASP:

<asp:DropDownList ID="ddItems" runat="server" /> 

コード:

ddItems.DataSource = myItemCollection;
ddItems.DataTextField = "Name";
ddItems.DataValueField = "Id";

foreach (ListItem item in ddItems.Items)
{
    if (item.Text == textToSelect)
    {
        item.Selected = true;
    }
}

すべてのアイテムを反復せずにこれを行う方法はありますか?

20
Ed Schwehm

あなたが試すことができます:

_ddItems.Items.FindByText("Hello, World!").Selected = true;
_

または:

_ddItems.SelectedValue = ddItems.Items.FindByText("Hello, World!").Value;
_

表示テキストと一致するアイテムが存在するかどうかわからない場合は、FindByText()nullの結果を確認する必要がある場合があります。

CheckBoxListなどの複数選択リストで最初のアプローチを使用して、追加の選択を追加していることに注意してください。 2番目のアプローチを使用して、すべての選択をオーバーライドします。

46
kbrimington

次のように、FindByTextクラスのListItemCollectionメソッドを使用します。

ListItem itemToSelect = ddlItems.Items.FindByText("some text to match");

if(itemToSelect != null)
{
    itemToSelect.Selected = true;
}
1
KP.

複数のドロップダウンの場合にドロップダウンで選択された項目テキストを選択する必要がある場合は、この方法を使用します。

// Call Method
SelectDropdownItemByText(ddlDropdown.Items.FindByText("test"));

// Define method
public void SelectDropdownItemByText(ListItem item)
{
    if (item != null)
    {
        item.Selected = true;
    }
}
0