none
Percorrer linha por linha no DataGridview RRS feed

  • Pergunta

  • Boa tarde Galera,

    tenho um datagridview com alguns códigos de produto nele.

    Precisava de criar um botão que percorresse todas as linhas do datagridview até o fim automaticamente e conforme fosse passando em cada linha trouxesse o código do produto em um textbox .

    Tentei usando o foreach, mas ele só está percorrendo com messagebox para o textbox não estou conseguindo.

     private void button1_Click(object sender, EventArgs e)
            {
                foreach (DataGridViewRow linha in dgvDados.Rows)
                {
                   
                     MessageBox.Show(linha.Cells[0].Value.ToString());


                }

            }

    Alguém pode me ajudar, por favor?

    Grato!

    quarta-feira, 13 de janeiro de 2016 17:13

Respostas

  • List<DataGridViewRow> rowCollection = new List<DataGridViewRow>();
    
    foreach(DataGridViewCell cell in dataGridView.SelectedCells)
    {
        rowCollection.Add(dataGridView.Rows[cell.RowIndex];
    }

    Assim voce recupera cada dado da lista. Depois é só passar os valores para seus textbox

    txtTexto1.Txt = rowCollection .ElementAt(0);//para o item 0 da lista

    Por favor, lembre-se de “Marcar como Resposta” as respostas que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.


    • Sugerido como Resposta Erick WendelMVP quarta-feira, 13 de janeiro de 2016 16:53
    • Sugerido como Resposta Erick WendelMVP quinta-feira, 14 de janeiro de 2016 02:14
    • Não Sugerido como Resposta Marcos SJ quinta-feira, 14 de janeiro de 2016 13:08
    • Sugerido como Resposta Marcos SJ quinta-feira, 14 de janeiro de 2016 13:08
    • Marcado como Resposta Marcos SJ sexta-feira, 15 de janeiro de 2016 17:00
    quarta-feira, 13 de janeiro de 2016 16:53

Todas as Respostas

  • Boa tarde Galera,

    tenho um datagridview com alguns códigos de produto nele.

    Precisava de criar um botão que percorresse todas as linhas do datagridview até o fim automaticamente e conforme fosse passando em cada linha trouxesse o código do produto em um textbox .

    Tentei usando o foreach, mas ele não percorre linha a linha como preciso.

    Alguém pode me ajudar, por favor?

    Grato!

    • Mesclado Marcos SJ quarta-feira, 13 de janeiro de 2016 18:15 Thread repetida
    quarta-feira, 13 de janeiro de 2016 16:34
  • List<DataGridViewRow> rowCollection = new List<DataGridViewRow>();
    
    foreach(DataGridViewCell cell in dataGridView.SelectedCells)
    {
        rowCollection.Add(dataGridView.Rows[cell.RowIndex];
    }

    Assim voce recupera cada dado da lista. Depois é só passar os valores para seus textbox

    txtTexto1.Txt = rowCollection .ElementAt(0);//para o item 0 da lista

    Por favor, lembre-se de “Marcar como Resposta” as respostas que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.


    • Sugerido como Resposta Erick WendelMVP quarta-feira, 13 de janeiro de 2016 16:53
    • Sugerido como Resposta Erick WendelMVP quinta-feira, 14 de janeiro de 2016 02:14
    • Não Sugerido como Resposta Marcos SJ quinta-feira, 14 de janeiro de 2016 13:08
    • Sugerido como Resposta Marcos SJ quinta-feira, 14 de janeiro de 2016 13:08
    • Marcado como Resposta Marcos SJ sexta-feira, 15 de janeiro de 2016 17:00
    quarta-feira, 13 de janeiro de 2016 16:53
  • Boa tarde. 

    você teria que fazer algo do tipo.

    Foreach(DatagridViewRow row in datagridview)

    {

         textbox.Text=row["coluna"].value;

    }


    • Editado Gambarra quarta-feira, 13 de janeiro de 2016 16:57
    quarta-feira, 13 de janeiro de 2016 16:55
  • Olá, tudo bem?

    Continue com o foreach, ele é excelente para o que você esta querendo fazer.

    Segue o código:

    private void btnPegarCodigo_Click(object sender, EventArgs e)
            {
    foreach (DataGridViewRow row in DataGridViewProdutos.Rows)
                {
    txtCodigos.Text += row.Cells[0].Value + ";";
    
                }
    }

    Espero ter ajudado, se deu tudo certo marca como respondido por favor, porque me ajuda bastante.

    Um abraços e sucesso e seus projetos.

    quarta-feira, 13 de janeiro de 2016 16:57
  • private void button1_Click(object sender, EventArgs e)
            {

                List<DataGridViewRow> rowCollection = new List<DataGridViewRow>();

                foreach(DataGridViewCell cell in dgvDados.SelectedCells)

                {

                       rowCollection.Add(dgvDados.Rows[cell.RowIndex]);
                       textBox1.Text = rowCollection.ElementAt[0];
                 }

            }

    Fiz do jeito que vc está me passando está dando erro nessa parte que está em negrito.

    Grato!

                              
    quarta-feira, 13 de janeiro de 2016 17:24
  • Boa tarde Dener,

    fiz exatamente assim:

                

     private void button1_Click(object sender, EventArgs e)
            {

                foreach (DataGridViewRow row in dgvDados.Rows)
                {
                    textBox1.Text += row.Cells[0].Value + ";";

                }

            }

    Não dá erros, mas a aplicação trava e não aparece dado nenhum no textbox.

    Grato!

    quarta-feira, 13 de janeiro de 2016 17:29
  • Era pra dar certo, vou te mandar o projeto, baixa e da uma olhada fiz no VS 2015:

    Se mesmo visualizando o projeto não der certo, começa um projeto do zero e testa novamente, é para funcionar perfeitamente:

    https://onedrive.live.com/redir?resid=9FBE0DE35A8A794D!181815&authkey=!AJ9N5yFOdjDF80M&ithint=file%2czip


    Abraços.


    quarta-feira, 13 de janeiro de 2016 17:30
  • A entendi, mas para mim assim não da certo, precisa de ser um código por vez.

    001

    002

    003

    Pois, o valor do textbox, vou jogar dentro de um parâmetro de uma procedure no banco de dados.

    Precisava de algo como está abaixo um por vez, mas no textbox e não messagebox como está aí no exemplo.

    Grato!



    • Editado fsm1993 quarta-feira, 13 de janeiro de 2016 17:49
    quarta-feira, 13 de janeiro de 2016 17:34
  • Voce esta a fazer mal...

    voce quer mostrar todos os codigos do producto no textbox? 

    da maneira que estas  fazer, ele simplesmente vai mostrar o ultimo codigo do producto no textbox...

    quantos textbox voce tem? 


    A flower cannot blossom without sunshine, and man cannot live without love.

    quarta-feira, 13 de janeiro de 2016 17:52
    Moderador
  • O foreach pega um por vez, basta você programar para onde você quer apontar, no exemplo mandei para um TextBox, mais você poderia mandar para onde quiser, no caso a procedure no banco de dados.


    Boa sorte.

    Disponha. :)

    quarta-feira, 13 de janeiro de 2016 17:54
  • Remove o + que esta no final, talvez funcione 

    A flower cannot blossom without sunshine, and man cannot live without love.

    quarta-feira, 13 de janeiro de 2016 17:55
    Moderador
  • Boa tarde, se eu tirar o + ele pega só o último valor da lista.

    Grato!

    quarta-feira, 13 de janeiro de 2016 18:20
  • Tenho um textbox, eu gostaria que trouxesse um código por vez que nem eu mostro do exemplo do messagebox, mas em um textbox.

    Grato!

    quarta-feira, 13 de janeiro de 2016 18:35
  • fsm1993,

    A sua pergunta inicial já foi respondida?


    Marcos Roberto de Souza Junior

    Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as respostas que resolveram o seu problema. Essa e uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    quinta-feira, 14 de janeiro de 2016 13:09
  • Se voce quer mostar um codigo por ver nao pode usar foreach

    tens de usar um outro metodo 


    A flower cannot blossom without sunshine, and man cannot live without love.

    quinta-feira, 14 de janeiro de 2016 14:54
    Moderador