Tag Archives: DataSource

C# – Preenchendo um dropdownlist com os valores de um Enum

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