none
Insertar valores de un Datable en un DatagridView en un loop RRS feed

  • Pregunta

  • Buenas, estoy teniendo problemas para llenar un datagrid con los datos provenientes de un datatable y tal vez me puedan ayudar.
     int indice;
                string Tipo,Cosecha,TotalCaj;
    
                TFolio.Text = stilo.FormatoFolio(TFolio.Text);
                entRec.Folio = TFolio.Text;
                _bl.TotalReci(entRec);
                 Dt = _bl.TotalReci(entRec);// Se llena el DT con la consulta a SQL
           
                indice = DGhistorial.Rows.Add();//Indice del DG
    
                //foreach (DataGridViewRow filas in DGhistorial.Rows)
                //{}
    
                TotalCaj = "";
                Tipo = ""; 
                Cosecha = ""; 
    
                for (int i = 0; i < Dt.Rows.Count; i++)
                {
                    {
                        DataRow row = Dt.Rows[i];
                        TotalCaj = Dt.Rows[0][0].ToString();
                        Tipo = Dt.Rows[0][1].ToString();
                        Cosecha = Dt.Rows[0][2].ToString();
    
                        DGhistorial.Rows[indice].Cells[0].Value = Cosecha;// Se llena cada col del DG con los datos
                        DGhistorial.Rows[indice].Cells[2].Value = Tipo;
                        //DGhistorial.Rows[indice].Cells[3].Value = Tipo;
                        //DGhistorial.Rows[indice].Cells[4].Value = Tipo;
                        DGhistorial.Rows[indice].Cells[5].Value = TotalCaj;
                   
                    }
                }

     Mi problema es que solo lo llena con el primer registro .
    jueves, 19 de abril de 2018 23:01

Respuestas

  • hola

    porque usas un for, eso es incorrecto,asigna el DataSource

    Dt =_bl.TotalReci(entRec);
    
    DGhistorial.DataSource = Dt;

    asi de simple y directo

    si quieres definir las columnas en diseñorecuerda que en el codigo deberias asignar AutoGenerateColumns = false

    al definir las columnas en la propiedad "DataPropertyName" indicas cual es el campo con el que se enlaza

    si en el Dt tienes una columna de nombre Cosecha, entonces debes indicar este en el DataPropertyName de esa columna que defines en diseño

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta Damorac miércoles, 25 de abril de 2018 13:04
    viernes, 20 de abril de 2018 4:16

Todas las respuestas

  • El problema radica, en que el FOR, ejecuta vueltas según la cantidad de registros que tenga el DT, pero nunca le colocas el contador en la posición del Dt.Rows[0][i]

    jueves, 19 de abril de 2018 23:39
  • hola

    porque usas un for, eso es incorrecto,asigna el DataSource

    Dt =_bl.TotalReci(entRec);
    
    DGhistorial.DataSource = Dt;

    asi de simple y directo

    si quieres definir las columnas en diseñorecuerda que en el codigo deberias asignar AutoGenerateColumns = false

    al definir las columnas en la propiedad "DataPropertyName" indicas cual es el campo con el que se enlaza

    si en el Dt tienes una columna de nombre Cosecha, entonces debes indicar este en el DataPropertyName de esa columna que defines en diseño

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta Damorac miércoles, 25 de abril de 2018 13:04
    viernes, 20 de abril de 2018 4:16
  • Muchas gracias por las respuestas, la de Leandro solucionó lo que necesitaba.
    miércoles, 25 de abril de 2018 13:06