Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/07/2010, 07:43
mgarciah
 
Fecha de Ingreso: septiembre-2009
Mensajes: 7
Antigüedad: 14 años, 7 meses
Puntos: 0
Cargar DataSource de un DataGridViewComboBoxColumn

Hola a todos,
tengo el siguiente caso:
Tengo un DataGridView con tres columnas para ingresar datos. Una de las columnas es del tipo DataGridViewComboBoxColumn (cbDivision).
A esta columna necesito asignarle al DataSource, el método que me devuelve la lista de Divisiones que tengo almacenado en la base de datos.
Se que la instrucción es :
Código:
cbDivision.DataSource = new obtenerDivisiones();
El problema es que no logro encontrar el evento donde debo hacer ejecutarla. Inicialmente lo habia hecho en el evento RowEnter, pero eso implica que cada que se inserta una linea en el DataGridView se recorre todas las filas para cargar el DataGridViewComboBoxColumn.

Si alguien tiene una mejor idea , se los agradezco muchisimo.

Código:
private void dataGridView2_RowEnter(object sender, DataGridViewCellEventArgs e)
        {
             foreach (DataGridViewRow fila in dataGridView2.Rows)
            {
                
                ((DataGridViewComboBoxCell)fila.Cells[3]).DataSource = new obtenerDivisiones();
                ((DataGridViewComboBoxCell)fila.Cells[3]).ValueMember = "Codigo";
                ((DataGridViewComboBoxCell)fila.Cells[3]).DisplayMember = "Nombre";                fila.Cells[0].Value = fila.Index;
            }        }

Código:
 internal List<DivisionTR> obtenerDivisiones( )
        {
            string querySQL = @"select ncoddivision,sdescripcion
                                from  tbdivision
                                order by sdescripcion";
            DivisionTR division=null;
            List<DivisionTR> listaDivisiones = new List<DivisionTR>();
            try
            {
                using (OracleCommand consulta = this.conexion.CreateCommand())
                {
                    consulta.CommandText = string.Format(querySQL);
                    using (OracleDataReader cursor = consulta.ExecuteReader())
                    {
                        while (cursor.Read())
                        {
                            division = new DivisionTR();
                            division.Codigo = cursor.IsDBNull(0) ? 0 : cursor.GetInt32(0);
                            division.Nombre = cursor.IsDBNull(1) ? null: cursor.GetString(1);
                            division.ListaLineas = obtenerLineas(division.Codigo, sufijo);
                            listaDivisiones.Add(division);
                        }
                    }
                }
            }
            catch (Exception e)
            {
                       throw ex;
            }
            return listaDivisiones;
        }