假设我有以下简单的枚举:
enum Response
{
Yes = 1,
No = 2,
Maybe = 3
}
如何将此枚举绑定到DropDownList控件,以便在列表中显示描述,并在选择一个选项后检索相关的数值(1,2,3)?
发布于 2008-09-15 07:10:23
我可能不会
绑定
因为数据是枚举,所以它在编译后不会改变(除非我有一个枚举
stoopid
时刻)。
最好只遍历枚举:
Dim itemValues As Array = System.Enum.GetValues(GetType(Response))
Dim itemNames As Array = System.Enum.GetNames(GetType(Response))
For i As Integer = 0 To itemNames.Length - 1
Dim item As New ListItem(itemNames(i), itemValues(i))
dropdownlist.Items.Add(item)
Next
或者在C#中也是如此
Array itemValues = System.Enum.GetValues(typeof(Response));
Array itemNames = System.Enum.GetNames(typeof(Response));
for (int i = 0; i <= itemNames.Length - 1 ; i++) {
ListItem item = new ListItem(itemNames[i], itemValues[i]);
dropdownlist.Items.Add(item);
}
发布于 2008-09-15 09:31:50
使用以下实用程序类
要获得一个
(枚举值和名称对)
枚举
;然后将
IDictionary
绑定到可绑定控件。
public static class Enumeration
{
public static IDictionary GetAll() where TEnum: struct
{
var enumerationType = typeof (TEnum);
if (!enumerationType.IsEnum)
throw new ArgumentException("Enumeration type is expected.");
var dictionary = new Dictionary();
foreach (int value in Enum.GetValues(enumerationType))
{
var name = Enum.GetName(enumerationType, value);
dictionary.Add(value, name);
}
return dictionary;
}
}
示例:
使用实用程序类将枚举数据绑定到控件
ddlResponse.DataSource = Enumeration.GetAll();
ddlResponse.DataTextField = "Value";
ddlResponse.DataValueField = "Key";
ddlResponse.DataBind();
发布于 2010-03-10 19:58:02
我用它来
ASP.NET MVC
Html.DropDownListFor(o => o.EnumProperty, Enum.GetValues(typeof(enumtype)).Cast().Select(x => new SelectListItem { Text = x.ToString(), Value = ((int)x).ToString() }))
https://stackoverflow.com/questions/61953
复制相似问题