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;
}
}
すべてのアイテムを反復せずにこれを行う方法はありますか?
あなたが試すことができます:
_ddItems.Items.FindByText("Hello, World!").Selected = true;
_
または:
_ddItems.SelectedValue = ddItems.Items.FindByText("Hello, World!").Value;
_
表示テキストと一致するアイテムが存在するかどうかわからない場合は、FindByText()
のnull
の結果を確認する必要がある場合があります。
CheckBoxList
などの複数選択リストで最初のアプローチを使用して、追加の選択を追加していることに注意してください。 2番目のアプローチを使用して、すべての選択をオーバーライドします。
次のように、FindByText
クラスのListItemCollection
メソッドを使用します。
ListItem itemToSelect = ddlItems.Items.FindByText("some text to match");
if(itemToSelect != null)
{
itemToSelect.Selected = true;
}
複数のドロップダウンの場合にドロップダウンで選択された項目テキストを選択する必要がある場合は、この方法を使用します。
// Call Method
SelectDropdownItemByText(ddlDropdown.Items.FindByText("test"));
// Define method
public void SelectDropdownItemByText(ListItem item)
{
if (item != null)
{
item.Selected = true;
}
}