我已将下拉列表绑定到星期几的枚举中,如下所示:
private void BindDayOfWeek()
{
this.ddlDayOfWeek.DataSource = GetWeekDays();
this.ddlDayOfWeek.DataBind();
}
private List<DayOfWeek> GetWeekDays()
{
return Enum.GetValues(typeof(DayOfWeek)).Cast<DayOfWeek>().ToList();
}
现在我想读取枚举DayOfWeek中所选工作日(来自下拉列表)的int值,即如果我从下拉列表中选择“Sunday”,我应该能够选择“星期日”的int值。 enum DaysOfWeek(不是ddlDayOfWeek.selectedValue或SelectedIndex)
如果没有开关和if(我认为可以是单向的),我怎么能这样做?
答案 0 :(得分:7)
由于SelectedValue
是一个字符串,您需要先将其解析为int
。然后你只需要把它投射到DayOfWeek
:
if(ddlDayOfWeek.SelectedIndex >= 0)
{
int selectedDay = int.Parse(ddlDayOfWeek.SelectedValue);
DayOfWeek day = (DayOfWeek) selectedDay;
}
如果你没有将DataTextField
和DataValueField
(你应该做什么)分开,你可以解析string
中显示的DropDownList
“星期日”{ {1}}通过DayOfWeek
:
Enum.Parse
修改:以下是一种如何从枚举设置DayOfWeek selectedDay = (DayOfWeek)Enum.Parse(typeof(DayOfWeek), ddlDayOfWeek.SelectedValue);
的方法:
DataTextField/DataValueField
答案 1 :(得分:0)
private void BindDayOfWeek()
{
this.ddlDayOfWeek.DataSource = GetWeekDays();
this.ddlDayOfWeek.DataTextField = DayOfWeek;
this.ddlDayOfWeek.DataValueField = (int)DayOfWeek.ToString();
this.ddlDayOfWeek.DataBind();
}
将绑定代码更改为上述代码。这样,下拉列表中的所选项目(如所有项目)将具有将向用户显示的文本值以及该值的值,您可以将其作为服务器端。项目的属性值将为您提供所选日期的编号。