Como llenar, correctamete, un ComboBox en C# o Java

En repetidas ocasiones me han preguntado “Benjamin ¿Como puedo llenar un ComboBox tomando datos de una base de datos?”, hay muchas maneras de las cuales hay muchas que en el futuro de tu aplicacion puedan dar algun error a la hora de relacionar. Por esto les enseñare la manera correcta y anti-errores.

Enlaces patrocinados:

Un poco de historia(Se que es aburrida, pero hay que leer un poco) ; toda la vida han existido formas de como poblar de datos un combobox o un listbox,  pero estas a su vez necesitaban de muchas cosas para poder estar actualizada en tiempo real.

Este tutorial vamos a ver de forma sencilla y basica lo que necesitamos para poder hacer de nuestro ComboBox un elemento actualizable y con datos concretos.

Primero necesitamos tener nuestra conexión a base de datos que ya hicimos hace unos meses atras [LINK](Nota: Aquel código que suplimos, solo funciona para archivos *.mbd, y para Sistemas Operativos de X86 o 32bits). En este tutorial por motivos de cambios de ordenador, tendré que usar el formato de Access de *.ACCD.

Trabajaremos en el mismo proyecto, solo agregaremos unos detalles:

1)      En la base de datos que creamos “CaminoGeek.accd” creamos una tabla llamada Ciudades, con 2 campos (tal y como se muestra debajo) un ID, y un campo llamado Ciudad.

2)      Una vez lista nuestra base de datos, vamos a poblarla para poderla utilizar.

3)  Volviendo a nuestro proyecto en VisualStudio. Vamos a crear una clase llama Elementos(); tal y como se muestra debajo.

Enlaces patrocinados:

class Elementos

    {

       public int codigo { get; set; }

        public String Cadena { get; set; }

    }

 4)      Ahora vamos a ir a nuestra clase bd.cs(Tomando en cuenta la misma estructura del tutorial anterior[Link]). La abrimos y le agregamos varios métodos más.

   public String getSelect(String Nombre, String Valor, String Tabla)
{

return this.select = “Select ” + Nombre + “,” + Valor + ” From ” + Tabla;
}
public OleDbCommand getCom(String comando)
{
return new OleDbCommand(comando, getConexion());
}

public void LlenaComboBox(String tb, ComboBox cb, String Campo, String Valor)
{
List<Elementos> Lista = new List<Elementos>();
OleDbDataReader reader = getCom(getSelect(Campo, Valor, tb)).ExecuteReader();
if (reader.HasRows)
{
while (reader.Read())
Lista.Add(new Elementos() {codigo=Convert.ToInt32(reader[Valor]),        Cadena=reader[Campo].ToString()});
try
{
cb.DataSource = Lista;
cb.DisplayMember = “Cadena”;
cb.ValueMember = “codigo”;
}
}
catch (Exception ee)
{
MessageBox.Show(ee.ToString());
}
finally
{
reader.Close();

}
}
}

Aquí estamos trabajando con la forma más básica de algo llamado colección de datos o Data Collections, este código resume lo siguiente: LlenaComboBox(); este método es el encargado de llenar cada ComboBox que le mandemos, por medio de los datos que necesitamos.

Ahora viene la pregunta ¿Por qué hacerlo de esta manera y no de otras cientas que existen? La razón por la que esta manera es más eficiente, es que se pueden usar los DataCollections de C# y VisualStudio, a su vez poder utilizar LINQ(Mas adelante hablaremos de esto, tutorial sobre LINQ) y tener calidad en control sobre los datos filtrados.

En resumen este método hace lo siguiente: Toma los datos y lo agrega a una lista de la Clase Elementos (que tiene atributos especiales) y podremos usar cada atributo en cada espacio de la lista. Ejemplo: Imaginemos que tenemos un Edificio (nuestra lista), este edificio tiene a su vez Plantas(sus Rows o líneas de datos), pero dentro de cada planta hay apartamentos(atributos que podemos cambiar según el piso) cada una de esos apartamentos están relacionados por cada piso, eso lo hace únicos. Asi mismo trabaja este tipo de pensar, en un solo Row puedo tener todos los atributos de esa misma instancia de la clase y manipularlos de forma independiente.

A este metodo le pasamos, los parametros necesarios para popular cualquier comboBox en nuestro proyecto, solo necesitamos La tabla, el ComboBox, el Campo que se mostrara y luego lo que sera el Valor que se guardara.

5) Ahora vamos a trabajar con la parte grafica de nuestro sistema, por defecto cuando creamos un proyecto nos crea un formulario con todas las características, entonces necesitamos lo siguiente, Un botón(para hacer la conexión, claro se puede hacer de otras maneras, pero por este tuto será solo un botón) un ComboBox y un Textbox. Tal y como lo muestra la siguiente fotografía.

 llenar, correctamete, un ComboBox en C# o Java1

llenar, correctamete, un ComboBox en C# o Java1

6) Agregaremos un evento al botón, con tan solo darle Doble click, dentro de este pondremos el siguiente código.

 llenar, correctamete, un ComboBox en C# o Java2

llenar, correctamete, un ComboBox en C# o Java2

  7) Ahora pasa sacar la información que deseamos, vamos a poner un nuevo evento en el Combobox  llamado DropDown_Closed () y le pondremos el siguiente código.

textBox1.Text = comboBox1.SelectedValue.ToString();

 Con eso podremos sacar toda información de ahí :).

Gracias por su colaboración, para el próximo tutorial veremos principios de LINQ.

Para Descargar el proyecto <<Click ahí.

Enlaces patrocinados:

3 Comments

  1. linnan
    • jaar
  2. Rory

Leave a Reply

Uso de cookies

Este sitio web utiliza cookies para que tengas la mejor experiencia de usuario. Si continúas navegando estás dando consentimiento para la aceptación de las mismas y también de nuestra política de cookies. Pincha el enlace para mayor información.ACEPTAR

Aviso de cookies