Cargar datos en un combox con su id y texto C#

ByMarcos Gonzalez

Cargar datos en un combox con su id y texto C#

Hace unos años atrás me tocó realizar un trabajo práctico en la facultad donde se requería cargar un combox que muestre el texto pero cuando se seleccione se extraiga su id.

Primero que nada implementaremos la siguiente clase llamada ListItem, con esta clase simularemos el objeto ListItem que se usa con el objeto DropDownList en ASP.Net pero nuestra necesidad es usarlo con el objeto combobox.

[code language=”csharp”]
class ListItem
{
private int IDText;
private String DisplayText;

public ListItem(int IDText, String DisplayText)
{
this.IDText = IDText;
this.DisplayText = DisplayText;
}

public String GetDisplayText() {
return DisplayText;
}

public int GetIDText() {
return IDText;
}

public void SetDisplayText(String DisplayText)
{
this.DisplayText = DisplayText;
}

public void SetIDText(int IDText)
{
this.IDText = IDText;
}

//we make override
public override String ToString() {
return DisplayText;
}
}
[/code]

Luego de haber implementado la clase procedemos a llenar nuestro combobox

[code language=”csharp”]
CBCategoria.Items.Add(new ListItem(1, "Automotor"));
CBCategoria.Items.Add(new ListItem(2, "Hogar"));
CBCategoria.Items.Add(new ListItem(3, "Viajes"));
[/code]

Como podemos observar, en lugar de pasar un texto tipo string en la forma tradicional, le asignamos un objeto puro practicamente donde el primer parametro que le pasamos es un dato int que sería su id y luego su texto a mostrar. Lo que ahora nos preguntamos es ¿Como extraigo su valor?

Creamos un objeto tipo ListItem en el cual le vamos a asignar el item seleccionado realizando un casteo.

Definición de casteo:

Casteo Explícito (Narrowing Casting):
El casteo explícito se produce cuando se realiza una conversión estrecha – narrowing casting – es decir, cuando se coloca un valor grande en un contenedor pequeño. Son susceptibles de perdida de datos y deben realizarse a través de código fuente, de forma explícita

Prácticamente lo que hacemos es “forzar” a que el item seleccionado se tome como un objeto ListItem.
Luego de tomamos su propiedad GetIDText() la cual hemos definido anteriormente

[code language=”csharp”]
ListItem Categoria_Seleccionada = (ListItem)CBCategoria.SelectedItem;

int id_categoria = Categoria_Seleccionada.GetIDText();
[/code]

y ya tenemos nuestro id seleccionado para usarlo en la logica de nuestro programa.

Lo bueno es que podemos aplicarlo como una clase genérica y de esta manera reciclar nuestro código sin escribir demasiado.

Acerca del autor

Marcos Gonzalez administrator

Desarrollador de software

Deja un cometario