Как уже говорили другие - не привязывайте данные к перечислению, если вам не нужно привязывать разные перечисления в зависимости от ситуации. Есть несколько способов сделать это, пара примеров ниже.
ObjectDataSource
Декларативный способ сделать это с ObjectDataSource. Сначала создайте класс BusinessObject, который будет возвращать List для привязки DropDownList к:
public class DropDownData
{
enum Responses { Yes = 1, No = 2, Maybe = 3 }
public String Text { get; set; }
public int Value { get; set; }
public List<DropDownData> GetList()
{
var items = new List<DropDownData>();
foreach (int value in Enum.GetValues(typeof(Responses)))
{
items.Add(new DropDownData
{
Text = Enum.GetName(typeof (Responses), value),
Value = value
});
}
return items;
}
}
Затем добавьте HTML-разметку на страницу ASPX, чтобы указать на этот класс BO:
<asp:DropDownList ID="DropDownList1" runat="server"
DataSourceID="ObjectDataSource1" DataTextField="Text" DataValueField="Value">
</asp:DropDownList>
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"
SelectMethod="GetList" TypeName="DropDownData"></asp:ObjectDataSource>
Эта опция не требует кода.
Код позади DataBind
Чтобы свернуть HTML на странице ASPX и выполнить связывание в Code Behind:
enum Responses { Yes = 1, No = 2, Maybe = 3 }
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
foreach (int value in Enum.GetValues(typeof(Responses)))
{
DropDownList1.Items.Add(new ListItem(Enum.GetName(typeof(Responses), value), value.ToString()));
}
}
}
В любом случае, хитрость заключается в том, чтобы методы типа Enum GetValues, GetNames и т. Д. Работали для вас.