加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何在C#中将dropDownlist映射到枚举?

发布时间:2020-12-16 01:58:49 所属栏目:百科 来源:网络整理
导读:我已将下拉列表绑定到星期几的枚举中,如下所示: private void BindDayOfWeek() { this.ddlDayOfWeek.DataSource = GetWeekDays(); this.ddlDayOfWeek.DataBind(); } private ListDayOfWeek GetWeekDays() { return Enum.GetValues(typeof(DayOfWeek)).CastD
我已将下拉列表绑定到星期几的枚举中,如下所示:

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”,我应该能够在枚举DaysOfWeek中选择“Sunday”的int值(不是ddlDayOfWeek.selectedValue或SelectedIndex)

如果没有开关和(如果我认为可以是一种方式),我怎么能这样做呢?

解决方法

由于SelectedValue是一个字符串,您需要先将其解析为int.然后你只需要把它投射到DayOfWeek:

if(ddlDayOfWeek.SelectedIndex >= 0)
{
    int selectedDay = int.Parse(ddlDayOfWeek.SelectedValue);
    DayOfWeek day = (DayOfWeek) selectedDay;
}

如果你没有分开DataTextField和DataValueField(你应该怎么做),你可以通过Enum.Parse将DropDownList中显示的字符串“Sunday”解析为DayOfWeek:

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();

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读