Enum Databinding
Cómo utilizar una enumeración como DataSource

Fecha: 13/Ago/2004 (10/08/2004)
Autor: Gustavo Bonansea [email protected]


Cuando en el código nos encontramos con una serie de valores que se corresponden con algún concepto como por ejemplo, la forma de pago de una factura, simplemente especificamos una lista que representa los posibles valores para ese concepto, evitando utilizar valores numéricos simples.

'Enumeracion a utilizar en el DataBinding
Public Enum FormaDePago
   Efectivo
   Cheque
   Tarjeta
   Deposito
   CuentaCorriente
   Pagare
End Enum
  

Después seguramente necesitaremos representar esos valores de alguna forma en algún formulario para que el usuario pueda realizar su selección. Supongamos que queremos darle esas opciones de pago al usuario a través de un combo. Normalmente tendríamos que mapear cada valor de la enumeración a una cadena para mostrarla en el combo. Luego para extraer el valor seleccionado deberíamos mapear las cadenas al valor de la enumeración correspondiente. Tarea que generalmente haríamos con dos Select Case.

Aquí lo haremos de una forma más elegante y concisa:

 'Obtengo un array con los nombres de los elementos de la enumeracion
 'y lo utilizo como datasource del combo
 cmbEnum.DataSource = [Enum].GetNames(GetType(FormaDePago))
 

De esta forma utilizamos a la enumeración como origen de datos para el combo. Así se llenará automáticamente y cada vez que modifiquemos la enumeración los cambios se verán reflejados en todos sus controles enlazados sin tener que modificar ninguna otra línea de código.

Para obtener el valor de enumeración que ha sido seleccionado por el usuario hacemos lo siguiente:

 'Texto selecionado en el combo
 Dim strSeleccionado As String
 strSeleccionado = cmbEnum.Text
 'Convierto la cadena en una variable del tipo de la enumeracion
 Dim enumValue As FormaDePago
 enumValue = [Enum].Parse(GetType(FormaDePago), strSeleccionado)
 
Espero que les sea útil. :-)

 


ir al índice

Fichero con el código de ejemplo: gbonansea_EnumDataBinding.zip - Tamaño 8KB