C# 使用字符串设置下拉列表的默认选择
我有一个下拉列表,它来自按字母顺序显示的sqldatasource。因此,列表索引编号与SQL表中的主键完全不对齐。我需要能够根据我掌握的主键信息设置页面加载时下拉列表的选择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
<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)));