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: puntonet@mug.org.ar 
  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.


Responder a