我已经将下拉列表绑定(bind)到星期几的枚举,如下所示:
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”,我应该能够选择“Sunday”的 int 值枚举 DaysOfWeek(不是 ddlDayOfWeek.selectedValue 或 SelectedIndex)
如果没有开关我怎么能做到这一点(我认为这是一种方式)?
最佳答案
由于 SelectedValue
是一个字符串,您需要先将其解析为 int
。然后你只需要将它转换为 DayOfWeek
:
if(ddlDayOfWeek.SelectedIndex >= 0)
{
int selectedDay = int.Parse(ddlDayOfWeek.SelectedValue);
DayOfWeek day = (DayOfWeek) selectedDay;
}
如果您不分开 DataTextField
和 DataValueField
(您应该这样做),您可以解析显示的 string
"Sunday"在 DropDownList
到 DayOfWeek
中,通过 Enum.Parse
:
DayOfWeek selectedDay = (DayOfWeek)Enum.Parse(typeof(DayOfWeek), ddlDayOfWeek.SelectedValue);
编辑:这是一种从枚举中设置DataTextField/DataValueField
的方法:
var weekDays = Enum.GetValues(typeof(DayOfWeek)).Cast<DayOfWeek>()
.Select(dow => new { Value = (int)dow, Text = dow.ToString() })
.ToList();
ddlDayOfWeek.DataSource = weekDays;
ddlDayOfWeek.DataTextField = "Text";
ddlDayOfWeek.DataValueField = "Value";
ddlDayOfWeek.DataBind();
关于c# - 如何将 dropDownlist 映射到 C# 中的枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20399124/