5

Linq クエリを使用して、ドロップダウン リスト コントロールで選択した値を見つけて設定しようとしています。

 Dim qry = From i In ddlOutcome.Items _
           Where i.Text.Contains(value)


 Dim selectedItem As ListItem = qry.First

 ddlOutcome.SelectedValue = selectedItem.Value

ドキュメントには、DropDownList.Items コレクションが IEnumerable を実装していると書かれていますが、Wh​​ere 句で Option Strict ON がレイト バインディングを禁止しているというエラーが表示されます。

4

5 に答える 5

9

私はあなたにC#で答えを与えることができます、そしてそれがあなたに役立つことを願っています。

DropDownlistのメソッドを使用する最も簡単な方法で、linqクエリよりも優れています。

DropDownList1.SelectedIndex = 
       DropDownList1.Items.IndexOf(DropDownList1.Items.FindByText("2"));

linqクエリが必要な場合は、次のようになります。

var selected=from i in DropDownList1.Items.Cast<ListItem>()
                     where ((ListItem)i).Text.Contains("2") select i;

DropDownList1.SelectedValue = selected.ToList()[0].Text;
于 2008-11-24T23:52:11.783 に答える
6

誰もが考えた:

foreach (ListItem li in drp.Items.Cast<ListItem>().Where(li => li.Value == ""))
{
    li.Selected = true;
}
于 2012-09-20T08:17:13.113 に答える
2

提案をありがとう、それらは両方とも私を実行可能な解決策に導くのに役立ちました. ドロップ リスト自体のメソッドを使用するのがよい方法であることに同意しますが、リスト内の項目のテキストが完全に一致するわけではないため、別の方法が必要でした。

    Dim qry = From i In ddlOutcome.Items.Cast(Of ListItem)() _
              Where i.Text.Contains(value)

    qry.First().Selected = True

linq クエリは、自分でリストを反復処理するよりも望ましいようで、その過程で何かを学びました。

于 2008-11-25T14:51:56.150 に答える
1

私のvb.netは不安定です(c#の男)が、試してみてください:

Dim qry = From DirectCast(i, ListItem) In ddlOutcome.Items ...

DirectCast の構文が間違っている可能性がありますが、私がどこから来たのか知っています。問題は、コンパイル時に、IEnumerable の Current プロパティが Object を返すため、Items が ListItem のコレクションとして検証できないことです。Items は一般的なコレクションではありません。

-オイシン

于 2008-11-24T23:30:30.237 に答える
0

次のコードを使用して選択する簡単な方法

foreach (ListItem i in DropDownList1.Items)
   {
      DropDownList1.SelectedValue = i.Value;
     if (DropDownList1.SelectedItem.Text=="text of your DropDownList")
       {
         break;
       }
    }
于 2008-12-23T12:17:18.850 に答える