Archivo

Posts Tagged ‘combo’

Llenar un ComboBox o DropDownList con miembros de una enumeración

Algo que nos permite .NET y (a mi parecer) no muy conocido es la posibilidad de enlazar la propiedad DataSource de un ComboBox contra un Enum y de esta forma completar el control con sus miembros. Desde luego y como el título indica esto también puede hacerse con un DropDownList en ASP.NET.
La utilidad para este código puede estar en formularios donde necesitemos setear propiedades de objetos al iniciar un proceso (dando por sentado que varias veces tenemos propiedades de tipo Enum)

Pongamos como ejemplo la siguiente enumeración:

Private Enum eVerduras
Tomate = &H0
Lechuga = &H1
Papa = &H2
Zapallo = &H3
Remolacha = &H4
End Enum

Para poblar el combo con sus miembros debemos llamar al método GetValues del espacio de nombres System.Enum pasando el tipo de nuestra enumeración.

cmbVerduras.DataSource = System.Enum.GetValues(GetType(eVerduras))
Enumeracion en ComboBox

Enumeracion en ComboBox

Como puede verse, los miembros aparecerán en el ComboBox ordenados según el valor numérico que tienen asignado en forma ascendente.
Para los mas quisquillosos detallistas podemos hacer que aparezcan ordenados por nombre.

Dim arrVerduras As Array = System.Enum.GetValues(GetType(eVerduras))
Array.Sort(System.Enum.GetNames(GetType(eVerduras)), arrVerduras)

cmbVerduras.DataSource = arrVerduras

Almacenamos en un array los objetos devueltos por el método GetValues y luego con  Array.Sort ordenamos utilizando los nombres de eVerduras como claves.

Por último, si luego necesitamos acceder a los items  y obtener un valor escribimos por ejemplo:

cmbVerduras.Items(2).GetHashCode

Un simple tip para poder llenar un combo con los miembros de una enumeracion.