8

値を使用してドロップダウンリストで項目を検索 (および選択) するには、単純に行います

dropdownlist1.Items.FindByValue("myValue").Selected = true;

部分的な値を使用してアイテムを見つけるにはどうすればよいですか? 3 つの要素があり、それぞれ「myValue one」、「myvalue two」、「myValue three」という値があるとします。私は何かをしたい

dropdownlist1.Items.FindByValue("three").Selected = true;

最後のアイテムを選択させます。

4

3 に答える 3

15

リストの最後から反復して、値にアイテムが含まれているかどうかを確認できます (これにより、値「myValueSearched」を含む最後のアイテムが選択されます)。

 for (int i = DropDownList1.Items.Count - 1; i >= 0 ; i--)
        {
            if (DropDownList1.Items[i].Value.Contains("myValueSearched"))
            {
                DropDownList1.Items[i].Selected = true;
                break;
            }
        }

または、いつものように linq を使用できます。

DropDownList1.Items.Cast<ListItem>()
                   .Where(x => x.Value.Contains("three"))
                   .LastOrDefault().Selected = true;
于 2012-12-04T00:43:59.353 に答える
1

リスト内の項目を反復処理し、項目の文字列にパターンが含まれている最初の項目を見つけたら、その Selected プロパティを true に設定できます。

bool found = false;
int i = 0;
while (!found && i<dropdownlist1.Items.Count)
{
       if (dropdownlist1.Items.ToString().Contains("three"))
              found = true;
       else
              i++;
}
if(found)
     dropdownlist1.Items[i].Selected = true;

または、これを行うメソッド (または拡張メソッド) を作成することもできます。

public bool SelectByPartOfTheValue(typeOfTheItem[] items, string part)
{
    bool found = false;
    bool retVal = false;
    int i = 0;
    while (!found && i<dropdownlist1.Items.Count)
    {
           if (items.ToString().Contains("three"))
                  found = true;
           else
                  i++;
    }
    if(found)
    {
           items[i].Selected = true;
           retVal = true;
    }
    return retVal;
}

そしてそれをこのように呼びます

if(SelectByPartOfTheValue(dropdownlist1.Items, "three")
     MessageBox.Show("Succesfully selected");
else
     MessageBox.Show("There is no item that contains three");
于 2012-12-04T00:41:06.160 に答える