使用字符串设置下拉列表的默认选择

本文关键字:默认 选择 下拉列表 设置 字符串 | 更新日期: 2023-09-27 18:22:22

我有一个下拉列表,它来自按字母顺序显示的sqldatasource。因此,列表索引号与SQL表中的主键根本不对齐。我需要能够根据我所掌握的主键信息,在页面加载时设置下拉列表的选择。

<asp:DropDownList ID="catagoryDropDown" runat="server" DataSourceID="SqlDataSource3"
     DataTextField="Catagory" DataValueField="PK_SupportCatagory" CssClass="dropDownList">
</asp:DropDownList>
<asp:SqlDataSource ID="SqlDataSource3" runat="server" ConnectionString="<%$     
     ConnectionStrings:ApplicationServices %>"
     SelectCommand="SELECT [PK_SupportCatagory], [Catagory] FROM [SupportCatagory] ORDER BY CASE  
     WHEN [PK_SupportCatagory] = 1 THEN 1 ELSE 2 END, [Catagory]">
</asp:SqlDataSource>

我的想法是通过查询数据库来获得字符串,使用它来适当地设置下拉列表。

catagoryDropDown.SelectedValue = "Sick Leave";

以上内容不起作用。我该如何做到这一点?有更好的方法吗?

使用字符串设置下拉列表的默认选择

Garrison Neely的回答不太奏效,但它让我走上了正轨。这最终奏效了:
            int i = 0;
            foreach (var item in catagoryDropDown.Items)
            {
                if (item.ToString().Equals("Sick Leave"))
                {
                    catagoryDropDown.SelectedIndex = i;
                    break;
                }
                i++;
            }
var selectedIndex = -1;
for(int i = 0; i < catagoryDropDown.Items.Count; i++)
{
    if(catagoryDropDown.Items[i].Text.ToLower() == "sick leave")
    {
        selectedIndex = i;
        break;
    }
}
if(selectedIndex > -1)
{
    catagoryDropDown.SelectedIndex = selectedIndex;
}

添加了.ToLower(),因为当字符串不考虑大小写时,它会让事情变得更容易。

试试这个:

catagoryDropDown.SelectedValue = catagoryDropDown.Items.FindByText("Sick Leave").Value;

试试这个,我很确定它会起作用:

ddl.SelectedIndex = ddl.Items.IndexOf(ddl.Items.FindByText(Convert.ToString(Any Value)));

请确保该值之前存在于数据源(ddl绑定到的数据源)中。