如何在加载页面时从下拉列表中自动选择项目

时间:2013-08-02 20:12:30

标签: asp.net c#-4.0

我需要在加载页面时从下拉列表中自动选择一个项目。 .aspx代码:

<asp:DropDownList ID="DropDownList1" runat="server" AppendDataBoundItems="True" AutoPostBack="True" DataSourceID="SqlDataSource1" DataTextField="fullname" DataValueField="fullname">
  <asp:ListItem>Any</asp:ListItem>
</asp:DropDownList>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:PHSNew %>" SelectCommand="SELECT DISTINCT [fullname] FROM [web_Users] WHERE ([role] = @role) ORDER BY [fullname]">
  <SelectParameters>
     <asp:Parameter DefaultValue="md" Name="role" Type="String" />
  </SelectParameters>
</asp:SqlDataSource>

现在例如,如果dropdownlist有4个项目(John,Albert,Epstien和Any)。 在.cs文件中我运行sql查询以从数据库中获取字符串名称,该名称应在此下拉列表中选择。

我刚使用DropDownList1.selectedValue= name。有效 但现在问题是数据库中的数据不断变化。我可能会得到字符串名称=“Renzo”。 Renzo是数据库的一部分,但现在已被删除。在那种情况下,我必须选择“任何”。 我尝试执行此代码:

string s = "Albert";
ListItemCollection li = DropDownList1.Items;

foreach (ListItem l in li)
{
    string s1 = l.ToString();
    if (l.ToString() == s)
    {
        DropDownList1.SelectedValue = s;
        return;
    }
    else
    {
        DropDownList1.SelectedValue = "Any";
    }
}

我在Page_Load 中调用此代码。

但是我只能从DropDownlist1获得一个项目,那就是“Any”。 如何获取所有项目并从下拉列表中自动选择特定项目?

1 个答案:

答案 0 :(得分:0)

我认为您的代码存在的问题是您使用的是l.ToString()。您可能希望在比较中使用l.Value

另一种方法是使用项目集合的查找方法。

string s = "Albert";

ListItem li = DropDownList1.Items.FindByValue(s);
if (li != null)
{
    li.Selected = true;
}
else
{
    DropDownList1.SelectedValue = "Any";
}