Как установить выбранный элемент в раскрывающемся списке ASP.NET с помощью отображаемого текста? - PullRequest
18 голосов
/ 27 августа 2010

У меня есть раскрывающийся список 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;
    }
}

Есть ли способ сделать это без перебора всех элементов?

Ответы [ 4 ]

45 голосов
/ 27 августа 2010

Вы можете попробовать:

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

Или:

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

Обратите внимание, что, если вы не уверены, что элементы соответствуют вашему отображаемому тексту, вам может потребоваться проверитьрезультаты FindByText() для null.

Обратите внимание, что я использую первый подход в списке с множественным выбором, например CheckBoxList, чтобы добавить дополнительный выбор.Я использую второй подход, чтобы переопределить все выборы.

1 голос
/ 27 августа 2010

Используйте метод FindByText класса ListItemCollection, например:

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

if(itemToSelect != null)
{
    itemToSelect.Selected = true;
}
0 голосов
/ 26 сентября 2018

Если вам нужно выбрать раскрывающийся текст выбранного элемента для нескольких раскрывающихся вариантов, используйте этот способ.

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

// Define method
public void SelectDropdownItemByText(ListItem item)
{
    if (item != null)
    {
        item.Selected = true;
    }
}
0 голосов
/ 27 марта 2017

Хорошо работает ..

drplistcountry.SelectedIndex = 
drplistcountry.Items.IndexOf(drplistcountry.Items.FindByText("--Select--"));

Или

drplistcountry.ClearSelection();
drplistcountry.SelectedIndex = 
drplistcountry.Items.IndexOf(drplistcountry.Items.FindByText("--Select--"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...