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

C# 使用字符串设置下拉列表的默认选择,c#,asp.net,drop-down-menu,C#,Asp.net,Drop Down Menu,我有一个下拉列表,它来自按字母顺序显示的sqldatasource。因此,列表索引编号与SQL表中的主键完全不对齐。我需要能够根据我掌握的主键信息设置页面加载时下拉列表的选择 <asp:DropDownList ID="catagoryDropDown" runat="server" DataSourceID="SqlDataSource3" DataTextField="Catagory" DataValueField="PK_SupportCatagory" CssClass

我有一个下拉列表,它来自按字母顺序显示的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 = catagoryDropDown.Items.FindByText("Sick Leave").Value;
var selectedIndex=-1;
对于(int i=0;i-1)
{
CatagorHydropdown.SelectedIndex=SelectedIndex;
}

添加了.ToLower(),因为当字符串没有大小写问题时,它会使事情变得更容易。

加里森·尼利的回答不太有效,但它让我走上了正确的道路。这一最后通牒奏效了:

            int i = 0;
            foreach (var item in catagoryDropDown.Items)
            {
                if (item.ToString().Equals("Sick Leave"))
                {
                    catagoryDropDown.SelectedIndex = i;
                    break;
                }
                i++;
            }

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

ddl.SelectedIndex = ddl.Items.IndexOf(ddl.Items.FindByText(Convert.ToString(Any Value)));
确保数据源(ddl绑定到的数据源)中存在该值


获取NullReferenceException哪个部分是
null
?在此上下文中
item
是什么?哈,忘了在foreach中从我的初始实现更改该部分。接得好。回答自己的问题总是很棒!对于针对来自数据源(ddl绑定到的数据源)的任何列表项值动态设置ddl的索引,这是最简单的方法。
            int i = 0;
            foreach (var item in catagoryDropDown.Items)
            {
                if (item.ToString().Equals("Sick Leave"))
                {
                    catagoryDropDown.SelectedIndex = i;
                    break;
                }
                i++;
            }
ddl.SelectedIndex = ddl.Items.IndexOf(ddl.Items.FindByText(Convert.ToString(Any Value)));