Как вы можете установить выбранный элемент в раскрывающемся списке 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;
}
}
Есть ли способ сделать это без повторения всех элементов?
Ответы
Ответ 1
Вы можете попробовать:
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;
}
Ответ 3
Работает отлично.
drplistcountry.SelectedIndex =
drplistcountry.Items.IndexOf(drplistcountry.Items.FindByText("--Select--"));
или
drplistcountry.ClearSelection();
drplistcountry.SelectedIndex =
drplistcountry.Items.IndexOf(drplistcountry.Items.FindByText("--Select--"));