Как искать через C # DropDownList программно - PullRequest
10 голосов
/ 15 мая 2009

Мне трудно понять, как закодировать серию операторов if, которые ищут в разных выпадающих списках определенное значение, введенное в текстовое поле. Я смог написать код, который находит определенное значение в каждом выпадающем списке; но, прежде чем это произойдет, мне нужно добавить выражение «если», говорящее «если выпадающий список не содержит конкретного значения, перейти к следующему выражению if и т. д.». Ниже приведен пример того, что я до сих пор:

if (dropdownlist1.SelectedValue == textbox1)
{
  dropdownlist1.SelectedIndex = dropdownlist1.items.indexof(dorpdownlist1.items.findbyvalue(textbox1.text) ...

if (dropdownlist2.SelectedValue == textbox1)
{
  dropdownlist2.SelectedIndex = dropdownlist2.items.indexof(dorpdownlist2.items.findbyvalue(textbox1.text) ...

etc...

То, что это делает, читает или сканирует первое значение или индекс в каждом раскрывающемся списке, основываясь на моей записи в textbox1. К сожалению, он определяет только первое значение или индекс. Мне нужно выяснить, как сканировать весь выпадающий список для всех значений для каждого оператора «если», чтобы найти соответствующее значение textbox1. У кого-нибудь есть предложения?

Спасибо,

DFM

Ответы [ 8 ]

22 голосов
/ 15 мая 2009
foreach (ListItem li in dropdownlist1.Items)
{
    if (li.Value == textBox1.text)
    {
       // The value of the option matches the TextBox. Process stuff here.
    }
}

Это мое предложение о том, как посмотреть, есть ли значение в выпадающем списке.

7 голосов
/ 15 мая 2009

DropDownList наследует коллекцию Items от ListControl . Поскольку Items - это массив, вы можете использовать этот синтаксис:

dropdownlist1.Items.Contains (textbox1.Text) в качестве логического значения.

3 голосов
/ 10 октября 2012

Вы можете просто так сделать.

if (ddl.Items.FindByValue("value") != null) {
   ddl.SelectedValue = "value";
};
2 голосов
/ 27 апреля 2011

Представленные решения работают, если вы хотите найти точное значение в загруженном комбинированном ящике.

Это решение также ищет частичные значения. Использует кнопку поиска и текстовая часть раскрывающегося списка в качестве критерия поиска

Private Sub btnSearch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSearch.Click

    ' query the dropdown object
    ''''''''''''
    ' part 9457 is a "contains" sample
    ' part 111 is a "startswith" sample

    Dim query As IEnumerable(Of [Object]) = _
    From item In cboParts.Items _
    Where (item.ToString().ToUpper().StartsWith(cboParts.Text.ToUpper())) _
    Select (item)

    ' show seached item as selected item
    cboParts.SelectedItem = query.FirstOrDefault()

    ' "startswith" fails, so look for "contains" 
    If String.IsNullOrEmpty(cboParts.SelectedItem) Then

        Dim query1 As IEnumerable(Of [Object]) = _
        From item In cboParts.Items _
        Where (item.ToString().ToUpper().Contains(cboParts.Text.ToUpper())) _
        Select (item)

        ' show seached item as selected item
        cboParts.SelectedItem = query1.FirstOrDefault()

        If String.IsNullOrEmpty(cboParts.SelectedItem) Then
            MsgBox("Part is not in dropdown list")
        End If

    End If
2 голосов
/ 15 мая 2009

Я бы составил список раскрывающихся списков, а затем использовал бы linq для его выбора.

List<DropDownList> list = new List<DropDownList>();
list.Item.Add(dropdown1);
list.Item.Add(dropdown2); 
.... (etc)

var selected = from item in list.Cast<DropDownList>()
               where item.value == textBox1.text
               select item;
1 голос
/ 06 марта 2012

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

ListItem _lstitemTemp = new ListItem("Text To Find In Dropdownlist");
if(_DropDownList.Items.Contains(_lstitemTemp))
{
    dosomething();
}
0 голосов
/ 15 мая 2009

Если вы не хотите использовать LINQ:

        List<ComboBox> dropDowns = new List<ComboBox>();
        dropDowns.Add(comboBox1);
        dropDowns.Add(comboBox2);

        bool found = false;
        ComboBox foundInCombo = null;
        int foundIndex = -1;

        for (int i = 0; i < dropDowns.Count && found == false; i++)
        {
            for (int j = 0; j < dropDowns[i].Items.Count && found == false; j++)
            {
                if (item == textBox1.Text)
                {
                    found = true;
                    foundInCombo = dropDowns[i];
                    foundIndex = j;
                }
            }
        }
0 голосов
/ 15 мая 2009

Одна строка с разделением кода для читабельности.

this.DropDownList1.SelectedItem = this.DropDownList1.Items
     .SingleOrDefault(ddli => ddli.value == this.textbox1.value);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...