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>

例如,如果下拉列表有 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 中获得一项,那就是“任何”。如何获取所有项目并从下拉列表中自动选择特定项目?

4

1 回答 1

0

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

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

string s = "Albert";

ListItem li = DropDownList1.Items.FindByValue(s);
if (li != null)
{
    li.Selected = true;
}
else
{
    DropDownList1.SelectedValue = "Any";
}
于 2013-08-02T20:59:56.717 回答