获取enum的Id我已经将它绑定到一个下拉列表

本文关键字:下拉列表 一个 绑定 Id enum 获取 | 更新日期: 2023-09-27 18:09:25

我已经将一组枚举绑定到下拉列表。

((DropDownList)control).DataSource = DefaultSync;
((DropDownList)control).DataBind();

这里的Defaultsync是包含2个枚举的列表。

List<MyEnum> DefaultSync=(List<SyncRequestTypeEnum>)(Enum.GetValues(typeof(SyncRequestTypeEnum)).Cast<SyncRequestTypeEnum>().Except(new SyncRequestTypeEnum[] { SyncRequestTypeEnum.ProjectLevel })).ToList();

现在我想根据下拉列表的用户选择获得enum的id。我使用了下面的代码,但它给出了一个错误,因为列表不包含它的值。

public int EnumID
{
    get
    {
        return Convert.ToInt32(ddlselection.Selectedvalue);
    }
    set
    {
        ddlselection.SelectedValue = Convert.ToString(value);
    } 
}

有人能帮帮我吗?

错误是:'ddlselection有一个无效的SelectedValue,因为它不存在于项目列表中。参数名称:value

获取enum的Id我已经将它绑定到一个下拉列表

为了使用SelectedValue属性,您需要指定数据项的哪个属性是值属性,哪个是显示的文本。我建议把你的代码改成这样:

var list = control as DropDownList;
list.DataSource = Enum.GetValues(typeof(SyncRequestTypeEnum))
    .Cast<SyncRequestTypeEnum>()
    .Except(/*..*/)
    .Select(x => new KeyValuePair<SyncRequestTypeEnum, string>(x, x.ToString())
    .ToList();
list.DataValueField = "Key";
list.DataTextField = "Value";
list.DataBind();

你的属性应该可以正常工作。

MSDN上的另一个例子和更详细的解释

相关文章: