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 我在 Where 子句中收到一个错误,即 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# guy)但尝试:

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

我可能有 DirectCast 语法错误,但你知道我来自哪里。问题在于,在编译时,无法将 Items 作为 ListItem 的集合进行验证,因为 IEnumerable 的 Current 属性返回 Object。Items 不是通用集合。

-Oisin

于 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 回答