Hola, amigos. Tengo un formulario para manejar los datos de una tabla SQL Server. Uno de los campos es 'IndicePais', que es un número entero. Para éste quiero que el usuario lo seleccione desde un combo box, pero no seleccionando el código directamente, sino que seleccione un país y se guarde su código. La información que se guarda en este campo es:
1 para España
8 para Portugal
15 para Francia
7 para Italia
Quiero que las opciones del combo sean los nombres de los paises, pero quiero que en el campo se almacene el código asociado. Para ello, he hecho lo siguiente:
1) El combo lo vinculo con el campo 'IndicePais' en DataBindings, para la propiedad 'SelectedValue'.
2) Como se trata de una lista fija de valores, no extraida de ningún dataset, me he creado la siguiente clase:
public class ClaseElementoCombo
{
private string _ParaMostrar; // Cadena que voy a mostrar en el combo
private int _ParaValor; // Valor que quiero que me devuelva el combo cuando selecciono el elemento en SelectedValue
public ClaseElementoCombo(string pm, int pv)
{
_ParaMostrar = pm;
_ParaValor = pv;
}
public string ParaMostrar
{
get
{
return _ParaMostrar;
}
}
public int ParaValor
{
get
{
return _ParaValor;
}
}
}
En el constructor del formulario, incluyo el siguiente código para establecer el datasource para el combo:
public Form1()
{
InitializeComponent();
ArrayList lb = new ArrayList();
lb.Add(new ClaseElementoCombo("España", 1));
lb.Add(new ClaseElementoCombo("Portugal", 8));
lb.Add(new ClaseElementoCombo("Francia", 15));
lb.Add(new ClaseElementoCombo("Italia", 7));
codigoZonaComboBox.ValueMember = "ParaValor";
codigoZonaComboBox.DisplayMember = "ParaMostrar";
codigoZonaComboBox.DataSource = lb;
}
Lo curioso del tema es que:
- Cuando se carga un registro en el formulario, el combo no muestra ningún valor.
- Cuando pincho para desplegar los elementos del combo, me muestra los cuatro paises, tal y como quiero. Si selecciono uno, y salgo del combo, el combo vuelve a quedarse vacío.
- Sin embargo, si grabo los datos, me graba en el campo el código del país que he seleccionado, a pesar de no quedarse visualizado el país seleccionado en el control combo box.
- Si este combo lo desvinculo de los datos para probarlo, funciona bien. Falla cuando está vinculado de la manera que describo a un campo de un databindingsource.
A ver si me podéis echar una manilla, que este tema me tiene un poco desorientado.
Gracias.