获取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
为了使用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上的另一个例子和更详细的解释