Как можно установить выбранный элемент в ASP.NET выпадающий список с помощью отображаемого текста?
У меня есть ASP.NET выпадающий список, который я заполнил через привязку данных. У меня есть текст, который соответствует отображаемому тексту для listitem, который я хочу выбрать. Я, очевидно, не могу использовать SelectedText (только геттер), и я не знаю индекс, поэтому я не могу использовать 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;
}
}
Есть ли способ сделать это без перебора всех элементов?
4 ответа:
Вы можете попробовать:
ddItems.Items.FindByText("Hello, World!").Selected = true;
Или:
Обратите внимание, что если вы не уверены, что существует элемент, соответствующий вашему отображаемому тексту, вам может потребоваться проверить результатыddItems.SelectedValue = ddItems.Items.FindByText("Hello, World!").Value;
FindByText()
дляnull
. Обратите внимание, что я использую первый подход в списке множественного выбора, напримерCheckBoxList
, чтобы добавить дополнительный выбор. Я использую второй подход для переопределения всех выборок.
Используйте метод
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; } }