A estrutura Enum é um recurso muito poderoso das linguagens de programação mais atuais, permitindo a criação do que gosto de chamar de “flags inteligentes”, que auxiliam tanto na visualização do código como na verficação de erros, muitas vezes em tempo de compilação.
O mais comum é utilizar Enums para facilitar a vida do próprio desenvolvedor. Porém, algumas vezes torna-se necessário fazer uma representação dos valores deste Enum na interface, mais comumente em um DropDownList.
Vamos supor então que tenhamos um Enum parecido com este:
1 2 3 4 5 6 7 | public enum StatusDaProposta { Aberta = 1, Inativa = 2, Pendente = 3, Cancelada = 4 } |
Para colocar seus valores em um DropDownlist, ou qualquer controle que suporte a propriedade DataSource, basta usar a rotina abaixo, supondo que estamos um aplicativo ASP.NET:
1 2 3 4 5 | if (!Page.IsPostBack) { StatusDropDownList.DataSource = Enum.GetNames(typeof(StatusDaProposta)); StatusDropDownList.DataBind(); } |
O método GetNames da classe Enum retorna um array de strings com os valores de texto utilizados no Enum informado como parâmetro.
Isso já é suficiente para que os valores sejam mostrados no DropDownList. Para recuperar o valor do enum referente ao item selecionado, é preciso refazer a conversão do valor. O método Parse da classe Enum faz o trabalho, convertendo a string para seu valor numérico equivalente ao Enum passado também por parâmetro. Para isso, use o código abaixo:
1 2 3 4 5 6 | protected void Button1_Click(object sender, EventArgs e) { StatusDaProposta meuStatus = (StatusDaProposta)Enum.Parse( typeof(StatusDaProposta), StatusDropDownList.SelectedValue); Label1.Text = meuStatus.ToString(); } |
Isso já facilita bantante o trabalho, evitando reescrita de código e também evitando criar estes valores em arquivos separados ou mesmo no banco de dados.
Para saber mais:
http://msdn.microsoft.com/en-us/library/sbbt4032(VS.80).aspx
Fonte: http://aspalliance.com/
Abraços
Tomás Vásquez
www.tomasvasquez.com.br