El combo tiene comportamientos extraños...
probá con
int idx = this.cbo.FindString("25");
this.cbo.SelectedIndex= idx;
----- Original Message -----
From: emiliano della maggiora
To: [email protected]
Sent: Thursday, May 24, 2007 6:38 PM
Subject: [puntonet] Cargar combo con un Diccionario
Hola gente... hace mucho que no escribo al grupo (estuve medio perdido)
Saludos para todos...
Tengo el siguiente problema: Mi modelo de objetos está basado en diccionario
de System.Collections.Generic. Lo que hago es recuperar por ejemplo un set de
registros y los cargos en clases que equivalen esos registros (Tengo una
instancia de esa clase por cada registro que recupero y cargo todos esas
instancias en un diccionario con clave y valor de acuerdo a la clave de la
tabla. Me explico? Hasta ahi... todo barbaro.
Cuando quiero cargar un combo utilizando DataSource, DisplayMember y
ValueMember paso todo ese diccionario a una clase mia DS que implementa IList e
IEnumerator. Cargo el combo lo mas bien, pero el problema que tengo es cuando
quiero asignar el SelectedValue en el caso de querer cargar en un form un
registro previamente cargado...
A continuación paso el codigo para que se entienda mejor.
// Creamos instancia del conversor DTOs a DataSource
dgm.Provider.DataSource ds = new dgm.Provider.DataSource();
// Obtenemos el diccionario con todos los DTOs de Proyectos
Dictionary<int, Sisat.DTO.Proyecto> dtos =
Sisat.Business.Proyecto.Listar();
// Pasamos cada DTO a nuestro Conversor DS.
foreach (Sisat.DTO.Proyecto dto in dtos.Values) ds.Add(dto);
// Cargamos el Combo [Esto funciona bárbaro]
// Aclaro que cada elemento es una clase del tipo DTO.Proyecto
// y tiene las propiedades Codigo y Nombre
// El tipo de dato de las propiedades es dgm.Property y esta tiene una
propiedad Value
// que está asignada como propiedad por defecto de la clase.
cbo.BeginUpdate();
cbo.ValueMember = "Codigo";
cbo.DisplayMember = "Nombre";
cbo.DataSource = ds;
cbo.EndUpdate();
// Antes de cambiar el valor de la propiedad consulto el valor y tiene 18
[Lo cual es correcto]
cbo.SelectedValue = 25;
// Luego de asignar el valor 25, consulto el valor de SelectedValue y
este es null.
Si por favor, alguien me puede tirar una linea...
Muchas gracias de ante mano.
Saludos para todos.
endm.