使用字符串设置下拉列表的默认选择
本文关键字:默认 选择 下拉列表 设置 字符串 | 更新日期: 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";
以上内容不起作用。我该如何做到这一点?有更好的方法吗?
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绑定到的数据源)中。