Tip: Como usar un enum como datasource en C# y ASP.NET

by ryudice on November 7, 2009

Hace poco tuve un problema en el que mi aplicacion utilizaba un enum, y tenia un metodo que recibia un parametro del mismo tipo que el enum, pero el problema era es que necesitaba que elusuario seleccionara en un combobox el enum y luego eso se pasaba como parametro a mi metodo. Basicamente lo que hice fue utilizar el enum para generar los items del combobox. A continuacion les voy enseniar como resolvi mi problema.

Bueno empezemos por crear el enum:

public enum TipoReporte
{
Departamento,
Empresa,
UbicacionGeografica,
CentroDeCosto
}

Este enum representa el tipo de filtro para aplicar al reporte. Ahora agreguemos un Drop Down List a nuestro Web Form, y cargamos los items del enum de la siguiente manera:

if (!IsPostBack)
{
DropDownList1.DataSource = Enum.GetNames(typeof (TipoReporte));
DropDownList1.DataBind();
}

Lo pueden agregar en el evento pageLoad si quieren.

Ahora vamos a crear nuestra funcion para comprobar el enum que se selecciono:

private void PrintEnum(TipoReporte tipoReporte)
{
switch (tipoReporte)
{
case TipoReporte.CentroDeCosto:
Response.Write(“Centro de costo”);
break;
case TipoReporte.Departamento:
Response.Write(“Departamento”);
break;
case TipoReporte.Empresa:
Response.Write(“Empresa”);
break;
}
}

Ahora en el evento SelectedIndexChanged de nuestro Drop Down List agregamos lo siguiente:

PrintEnum((TipoReporte) Enum.Parse(typeof(TipoReporte),DropDownList1.SelectedValue));

Explicacion
Este codigo se ve un poco complejo pero es sencillo en realidad. Lo primero que hacemos es utilizar la funcion Enum.Parse para convertir el SelectedValue del dropdownlist a un objeto. La funcion Enum.Parse lleva como primer parametro el tipo del Enum al que queremos convertir el string, y como segundo parametro el string. Esta funcion nos devuelve un objeto del tipo Object, ahora como nuestra funcion acepta un objeto del tipo de nuestro enum, el cual es TipoReporte, tenemos que hacer un case, esto lo hacemos usando “(TipoReporte)” y asi llamamos nuestra funcion.

Share and Enjoy:
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • Twitter

Related posts:

  1. Porque deberias de usar un CDN (Content delivery network) y como
  2. Como editar todas las filas de un gridview al mismo tiempo

Leave a Comment

Get Adobe Flash playerPlugin by wpburn.com wordpress themes

PensandoEnCodigo is Digg proof thanks to caching by WP Super Cache