Go to content Go to navigation

Conectar un ComboBox a dos datasets en C#

Jun 19, 11:00 AM


Un problemilla que se me ha dado ultimamente: como alimentar un combobox en C# para que recoja los datos a seleccionar de una tabla en un dataset pero almacene o recupere los datos seleccionados en otro. Un ejemplo vale mas que mil palabras.

Tenemos dos tablas, una Departamentos y otra Puestos. Un Puesto puede ser ‘Responsable de departamento’, para lo cual almacena un campo numerico con el código de departamento.

Queremos que el combobox muestre todos los departamentos almacenados en la tabla, pero que el valor seleccionado sea el correspondiente al registro correspondiente de la tabla Puestos. Por razones de diseño de la capa de datos, tenemos ambas tablas almacenadas en datasets distintos, dsDeptos y dsPuest. El dataset correspondiente a la tabla Puestos está conectado a un objeto BindingSource que alimenta al formulario (BindingSource1).

La tabla Departamentos tiene los campos CodDepto y NombreDepto que identifican los mismos. El departamento tiene su correspondiente en Puesto mediante el campo RespDepto.

El ComboBox se llamará Combo1.

Bien, la forma de hacerlo es:

Combo1.DataSource:dsDeptos
Combo1.DisplayMember:Table.NombreDepto
Combo1.ValueMember:Table.CodDepto

con esto alimentamos los items del combo.

Combo1.SelectedValue:BindingSource1-RespDepto

o en código

Combo1.DataBindings.Add(new System.Windows.Forms.Binding("SelectedValue", this.BindingSource1, "RespDepto", true));
Combo1.DataSource = dsDeptos;
Combo1.DisplayMember = "Table.NombreDepto";
Combo1.ValueMember = "Table.CodDepto";

Y eso es todo amigos

<< Router Debian (I)