Usuário com melhor resposta
Dúvida pegar o valor da coluna de cada linha no datagridview

Pergunta
-
Respostas
-
foreach (var row in this.dataGridView1.Rows) { var dataGridViewRow = row as DataGridViewRow; var celula = dataGridViewRow.Cells[7]; // Aqui eu usei o 7 pois é o index da coluna produtoid var valor = celula.Value; }
- Sugerido como Resposta Lucio Rogerio SPBanned quinta-feira, 18 de junho de 2015 18:14
- Marcado como Resposta Gustavo.Henrique quinta-feira, 18 de junho de 2015 19:01
-
Você pode fazer de três maneiras.
1) Você seta a propriedade AllowUserToAddRows do DataGrid para false, isso faz com que a ultima linha seja removida, mas o usuário não pode mais adicionar registros manualmente.
2) Você pode trocar o foreach por um for que itera apenas até o penúltimo registro.
for (int i = 0; i < this.dataGridView1.Rows.Count - 1; i++) { var dataGridViewRow = this.dataGridView1.Rows[i] as DataGridViewRow; var celula = dataGridViewRow.Cells[7]; var valor = celula.Value; }
3) Você pode continuar usando o ForEach, mas vai precisar fazer um teste para ver se é a ultima linha.
foreach (var row in this.dataGridView1.Rows) { var dataGridViewRow = row as DataGridViewRow; var indexDaLinha = this.dataGridView1.Rows.IndexOf(dataGridViewRow); if (indexDaLinha == this.dataGridView1.Rows.Count - 1) //Aqui você testa ve se é a a ultima linha, caso seja ele sai do foreach. break; //Esse comando break basicamente encerra o foreach. var celula = dataGridViewRow.Cells[7]; var valor = celula.Value; }
- Editado Bruno Maschio Joaquim quinta-feira, 18 de junho de 2015 19:15
- Marcado como Resposta Gustavo.Henrique quinta-feira, 18 de junho de 2015 19:42
Todas as Respostas
-
Olá, tenta usar o código abaixo
foreach (var row in this.dataGridView1.Rows) { var dataGridViewRow = row as DataGridViewRow; var celula = dataGridViewRow.Cells["produtoid"]; var valor = celula.Value; }
Você pode também acessar via index, ou seja, em vez de informar o nome da coluna você informa o index, que no seu caso seria o index 7.- Editado Bruno Maschio Joaquim quinta-feira, 18 de junho de 2015 17:54
-
-
foreach (var row in this.dataGridView1.Rows) { var dataGridViewRow = row as DataGridViewRow; var celula = dataGridViewRow.Cells[7]; // Aqui eu usei o 7 pois é o index da coluna produtoid var valor = celula.Value; }
- Sugerido como Resposta Lucio Rogerio SPBanned quinta-feira, 18 de junho de 2015 18:14
- Marcado como Resposta Gustavo.Henrique quinta-feira, 18 de junho de 2015 19:01
-
Bruno, eu consegui.
Porém, me ocorreu outro problema.
Perceba que abaixo da linha 1 do datagridview, tem um alinha com asterisco, então, na hora de fazer o foreach coloquei assim:
foreach (DataGridViewRow row in this.dgvItemVenda.Rows)
{
if (dgvItemVenda.Rows.Count > 0)
{
var celula = row.Cells[7].Value;
valor = Convert.ToInt64(celula);
objItemVenda._objProduto = objProdutoBO.selecionarUM(valor);
objItemVenda._objVenda = objVendaBO.selecionarUM(contador);
objItemVendaBO.inserir(objItemVenda);
}
}Só que esse foreach tá contado essa linha do asterisco como 0 e por isso ta dando erro. Como faço pra ele não contar essa linha?
Tentei corrigir com esse if mas não sem sucesso.- Editado Gustavo.Henrique quinta-feira, 18 de junho de 2015 19:06 erro
-
Você pode fazer de três maneiras.
1) Você seta a propriedade AllowUserToAddRows do DataGrid para false, isso faz com que a ultima linha seja removida, mas o usuário não pode mais adicionar registros manualmente.
2) Você pode trocar o foreach por um for que itera apenas até o penúltimo registro.
for (int i = 0; i < this.dataGridView1.Rows.Count - 1; i++) { var dataGridViewRow = this.dataGridView1.Rows[i] as DataGridViewRow; var celula = dataGridViewRow.Cells[7]; var valor = celula.Value; }
3) Você pode continuar usando o ForEach, mas vai precisar fazer um teste para ver se é a ultima linha.
foreach (var row in this.dataGridView1.Rows) { var dataGridViewRow = row as DataGridViewRow; var indexDaLinha = this.dataGridView1.Rows.IndexOf(dataGridViewRow); if (indexDaLinha == this.dataGridView1.Rows.Count - 1) //Aqui você testa ve se é a a ultima linha, caso seja ele sai do foreach. break; //Esse comando break basicamente encerra o foreach. var celula = dataGridViewRow.Cells[7]; var valor = celula.Value; }
- Editado Bruno Maschio Joaquim quinta-feira, 18 de junho de 2015 19:15
- Marcado como Resposta Gustavo.Henrique quinta-feira, 18 de junho de 2015 19:42
-