none
Meu GridView adiciona sempre a mesma ROW RRS feed

  • Pergunta

  • Boa noite galera,

    seguinte, estou adicionando via código minha tabela com as colunas no gridView, porém no meu foreach sempre ele pega o mesmo row, como faço pra depois do primeiro row ele pegar o próximo? segue o meu código, desde já agradeço.

      SqlDataReader dr = cmd.ExecuteReader();
    
                while (dr.Read())
                {
                    foreach (DataGridViewRow dp in dataGridView1.Rows)
                    {
                        dp.Cells["Nome_Cliente"].Value = dr["Nome"].ToString();
                        dp.Cells["Nome_Vendedor"].Value = dr["Nome_Vendedor"].ToString();
                        dp.Cells["Data"].Value = dr["Data"].ToString();
                        dp.Cells["Muçarela"].Value = dr["Muçarela"].ToString();
                        dp.Cells["Calabresa"].Value = dr["Calabresa"].ToString();
                        dp.Cells["Frango"].Value = dr["Frango"].ToString();
                        dp.Cells["Marguerita"].Value = dr["Marguerita"].ToString();
                        dp.Cells["Presunto"].Value = dr["Presunto"].ToString();
                        dp.Cells["Especial"].Value = dr["Especial"].ToString();                    
                    }
                    dataGridView1.Rows.Add();
                }
            }
      

    terça-feira, 24 de setembro de 2013 21:06

Respostas

  • Se você tiver colocado pelo menos as colunas pelo Wizard do proprio DataGridView

    o procedimento seria o seguinte

    DataGridViewRow Row = new DataGridViewRow();

    r.Cells.Add(new DataGridViewTextBoxCell()); // para cada item uma cell exemplo Nome_Cliente

    r.Cells.Add(new DataGridViewTextBoxCell()); // depois Nome_Vendedor

    r.Cells.Add(new DataGridViewTextBoxCell()); // e ai vai

    r.Cells.Add(new DataGridViewTextBoxCell());

    r.Cells[0].Value = dr["Nome"].ToString(); 
    r.Cells[1].Value = dr["Nome_Vendedor"].ToString(); // e assim vai!

    dataGridView1.Rows.Add(r);


    Fúlvio Cezar Canducci Dias

    quarta-feira, 25 de setembro de 2013 01:35

Todas as Respostas

  • Se você tiver colocado pelo menos as colunas pelo Wizard do proprio DataGridView

    o procedimento seria o seguinte

    DataGridViewRow Row = new DataGridViewRow();

    r.Cells.Add(new DataGridViewTextBoxCell()); // para cada item uma cell exemplo Nome_Cliente

    r.Cells.Add(new DataGridViewTextBoxCell()); // depois Nome_Vendedor

    r.Cells.Add(new DataGridViewTextBoxCell()); // e ai vai

    r.Cells.Add(new DataGridViewTextBoxCell());

    r.Cells[0].Value = dr["Nome"].ToString(); 
    r.Cells[1].Value = dr["Nome_Vendedor"].ToString(); // e assim vai!

    dataGridView1.Rows.Add(r);


    Fúlvio Cezar Canducci Dias

    quarta-feira, 25 de setembro de 2013 01:35
  • André utilize o DataSource da sua Grid

    GridView1.DataSource = dr;
    GridView1.DataBind();

    Com isso seu foreach e o while somem.

    Ai seu Html você deixa assim:

    <asp:GridView ID="GridView" runat="server" AutoGenerateColumns="False" Width="40%"
                            PageSize="20" ToolTip="Selecione os documentos recebidos">
          <Columns>
                <asp:BoundField DataField="Nome" />
                <asp:BoundField DataField="Nome_Vendedor" />
                <asp:BoundField DataField="Data" />
                <asp:BoundField DataField="Muçarela" />
                <asp:BoundField DataField="Calabresa" /
                <asp:BoundField DataField="Frango" />
                <asp:BoundField DataField="Marguerita" />
                <asp:BoundField DataField="Presunto" />
                <asp:BoundField DataField="Especial" />
          </Columns>
    </asp:GridView>

    Eu utilizo sempre dessa forma acho muito mais simples. 

    Espero ter ajudado. 

    Se ajudou marque. 

    Abraço.


    Voce pode encarar um erro como uma besteira a ser esquecida, ou como um resultado que aponta uma nova direcao by Steve Jobs

    • Sugerido como Resposta Fernando Mamprin quarta-feira, 25 de setembro de 2013 11:53
    quarta-feira, 25 de setembro de 2013 11:53
  • Muito bom Fúlvio Cezar Canducci Dias obrigado deu certinho.

    Fernando, marquei a sua como útil pois sei que funciona assim, porém estou usando windows form, mas obrigado.

    quarta-feira, 25 de setembro de 2013 12:45
  • Pra quem tiver a mesma dúvida que eu, ao invés de adicionar mão a mão a célula eu fiz um for, segue como ficou meu código:

         SqlDataReader dr = cmd.ExecuteReader();
    
                while (dr.Read())
                {
                    DataGridViewRow row = new DataGridViewRow();
    
                    for (int i = 0; i < dr.FieldCount; i++)
                    {
                        row.Cells.Add(new DataGridViewTextBoxCell());
                    }
    
                    
                    row.Cells[0].Value = dr["Nome"].ToString();
                    row.Cells[1].Value = dr["Nome_Vendedor"].ToString();
                    row.Cells[2].Value = dr["Data"].ToString();
                    row.Cells[3].Value = dr["Muçarela"].ToString();
                    row.Cells[4].Value = dr["Calabresa"].ToString();
                    row.Cells[5].Value = dr["Frango"].ToString();
                    row.Cells[6].Value = dr["Marguerita"].ToString();
                    row.Cells[7].Value = dr["Presunto"].ToString();
                    row.Cells[8].Value = dr["Especial"].ToString();
                    row.Cells[9].Value = dr["Valor"].ToString();
    
                    dataGridView1.Rows.Add(row);
                }
            }

    Att

    quarta-feira, 25 de setembro de 2013 18:32