Probablemente no vincularía los datos, ya que es una enumeración, y no cambiará después del tiempo de compilación (a menos que esté teniendo uno de esos momentos aburridos ).
Mejor solo iterar a través de la enumeración:
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
O lo mismo en 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);
}
Utilice la siguiente clase de utilidad
Enumeration
para obtener unIDictionary<int,string>
(valor de Enum y par de nombre) de una enumeración ; luego vincula el IDictionary a un Control enlazable .Ejemplo: uso de la clase de utilidad para vincular datos de enumeración a un control
fuente
Lo uso para ASP.NET MVC :
fuente
Mi versión es solo una forma comprimida de lo anterior:
fuente
Cada tipo de Enum deriva de System.Enum. Hay dos métodos estáticos que ayudan a vincular datos a un control de lista desplegable (y recuperar el valor). Estos son Enum.GetNames y Enum.Parse. Con GetNames, puede vincular su control de lista desplegable de la siguiente manera:
Ahora, si desea que el valor de Enum vuelva a la selección ...
fuente
Después de leer todas las publicaciones, se me ocurrió una solución integral para admitir mostrar la descripción de enumeración en la lista desplegable, así como seleccionar el valor adecuado del Modelo en el menú desplegable cuando se muestra en modo Editar:
enumeración:
clase de extensión enum:
Clase de modelo:
y Ver:
y si está usando ese menú desplegable sin vincular al Modelo, puede usar esto en su lugar:
Al hacerlo, puede esperar que su menú desplegable muestre Descripción en lugar de valores de enumeración. Además, cuando se trata de Editar, su modelo se actualizará mediante el valor seleccionado desplegable después de publicar la página.
fuente
Como ya han dicho otros, no se vinculen datos a una enumeración, a menos que necesite vincularse a enumeraciones diferentes según la situación. Hay varias formas de hacer esto, un par de ejemplos a continuación.
ObjectDataSource
Una forma declarativa de hacerlo con ObjectDataSource. Primero, cree una clase BusinessObject que devolverá la Lista para vincular DropDownList a:
Luego agregue un marcado HTML a la página ASPX para apuntar a esta clase BO:
Esta opción no requiere código detrás.
Código detrás de DataBind
Para minimizar el HTML en la página ASPX y enlazar en Code Behind:
De todos modos, el truco es dejar que los métodos de tipo Enum de GetValues, GetNames, etc. trabajen para usted.
fuente
No estoy seguro de cómo hacerlo en ASP.NET, pero mira esta publicación ... ¿podría ayudar?
fuente
Podrías usar linq:
fuente
fuente
fuente
Código genérico usando la respuesta seis.
fuente
Después de encontrar esta respuesta, se me ocurrió lo que creo que es una forma mejor (al menos más elegante) de hacer esto, pensé en volver y compartirlo aquí.
Page_Load:
Valores de carga:
Guardar valores:
fuente
Esta es probablemente una vieja pregunta ... pero así es como hice la mía.
Modelo:
Luego, en la Vista: aquí se explica cómo usar el menú desplegable.
Esto debería llenar todo en su lista de enumeraciones. Espero que esto ayude..
fuente
[Display(Name = "Option number one")] Option1,
Eso no es exactamente lo que está buscando, pero podría ayudar:
http://blog.jeffhandley.com/archive/2008/01/27/enum-list-dropdown-control.aspx
fuente
¿Por qué no usarlo así para poder pasar cada lista?
Y el uso es tan simple como:fuente
Desde entonces, ASP.NET se ha actualizado con algunas funcionalidades más, y ahora puede usar la enumeración integrada para desplegar.
Si quieres unirte al Enum, usa esto:
Si está vinculando una instancia de Response, use esto:
fuente
Esta es mi solución para ordenar un Enum y DataBind (texto y valor) para desplegar usando LINQ
fuente
Consulte mi publicación sobre cómo crear un asistente personalizado "ASP.NET MVC - Crear un asistente de DropDownList para enumeraciones": http://blogs.msdn.com/b/stuartleeks/archive/2010/05/21/asp-net-mvc -creating-a-dropdownlist-helper-for-enums.aspx
fuente
Si desea tener una descripción más fácil de usar en su cuadro combinado (u otro control), puede usar el atributo Descripción con la siguiente función:
Aquí hay un ejemplo de una enumeración con atributos de Descripción aplicados:
Entonces Bind para controlar así ...
De esta forma, puede colocar el texto que desee en el menú desplegable sin que tenga que verse como un nombre de variable
fuente
También puede usar métodos de extensión. Para aquellos que no están familiarizados con las extensiones, sugiero consultar la documentación de VB y C # .
Extensión VB:
Para usar la extensión:
Extensión C #:
Para usar la extensión:
Si desea configurar el elemento seleccionado al mismo tiempo, reemplace
con
Al convertir a System.Enum en lugar de tamaño int y problemas de salida se evitan. Por ejemplo, 0xFFFF0000 sería 4294901760 como uint pero sería -65536 como int.
TryCast y como System.Enum son ligeramente más rápidos que Convert.ChangeType (enumTypeValues [i], enumUnderType) .ToString () (12:13 en mis pruebas de velocidad).
fuente
Tutorial asp.net y winforms con cuadro combinado y lista desplegable: Cómo usar Enum con Combobox en C # WinForms y Asp.Net
la esperanza ayuda
fuente
La solución aceptada no funciona, pero el código a continuación ayudará a otros a buscar la solución más corta.
fuente
Puedes hacer esto mucho más corto
fuente