VS 2015 – Aplicación de Windows – Cargando y recuperando valores de un ComboBox con un DataTable

Muchas veces no probamos las cosas y cuando lo queremos aplicar nos damos cuenta que la aplicación/programa solo funciona parcialmente.

En la materia de Administración de Base de Datos estamos recuperando algunos aspectos que tienen que ver con la programación orientada a las bases de datos.

Una situación muy común es cargar un combo/lista desplegable con información de una base de datos.

Andamos inspirados y estamos desarrollando unas clases que buscan resolver varios problemas evitando reescribir o copiar código, por ello primero obviaremos la creación del DataTable, ya que la clase que les menciono lo hace. Empezamos pues creando una aplicación de Windows Form.

Agregamos la referencia de la clase que les menciono y su respectivo using (en esta parte es necesario que ustedes hagan su propia clase o hagan su propio objeto DataTable).

Al cargar la forma programamos el evento Load, myservice.RegresaCatalogo() nos da como respuesta un DataTable, y esto es simple y lo encontrarán en muchos tutoriales de internet, en este caso vamos a solicitar datos de la base de datos ejemplo de Oracle XE, la tabla COUNTRIES (que yo recordaba eran ciudades y son países)

 

private void Form1_Load(object sender, EventArgs e){

ServiciosDBOracle myservice = new ServiciosDBOracle(“Data Source = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)))(CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = XE))); User Id = HR; Password = *********;”);
Cb_cities.DataSource = myservice.RegresaCatalogo(“COUNTRIES”);
Cb_cities.DisplayMember = “COUNTRY_NAME”;
Cb_cities.ValueMember = “COUNTRY_ID”;

}

Ahora programamos el botón que muestra el valor seleccionado en el combo, por medio del evento Click., aquí algunos blogs dicen que con poner SelectedValue-Index-Item, probaremos a continuación estas opciones …

 

private void button1_Click(object sender, EventArgs e)
{

lbl_elemselec.Text = Cb_cities.SelectedItem.ToString();

}

Si probamos con SelectedText, nos da en blanco el Text de la etiqueta.

Con el código de SelectedValue, si nos da el valor de la tabla (que es el ID de la tabla COUNTRIES).

private void button1_Click(object sender, EventArgs e)
{

lbl_elemselec.Text = Cb_cities.SelectedValue.ToString();

}

Pero si queremos obtener el texto que se muestra en el combo (United Kingdom, Israel, etc.). sería un código parecido a este.

private void button1_Click(object sender, EventArgs e)
{

DataRowView drv = (DataRowView)Cb_cities.SelectedItem;
lbl_elemselec.Text = drv[“COUNTRY_NAME”].ToString();

}

Ya que lo contiene el combo es un objeto DataRowView, tenemos que rescatar este valor por medio de un cast, luego traemos el valor del campo accesando como si fuera un arreglo y listo tenemos el valor que se muestra en el combo.

Y así era la solución, estamos en contacto.

Profesor Miguel Araujo.

Deja un comentario