Usuário com melhor resposta
Erro: ''O índice estava fora do intervalo. Ele deve ser não-negativo e menor que o tamanho da coleção".

Pergunta
-
Boa noite. Estou fazendo um projeto para escola, no qual, fiquei travado em um problema. Tenho duas tabelas no BD(pedidos e itens_pedido) e ao tentar cadastrar o pedido ocorre o erro citado acima. A tabela itens_pedido(onde ocorre o erro)deve receber o código do cardápio (que é a mesma coisa que produto, entretanto ao pegar o valor de uma dataGridView ocorre o erro citado acima).
Sou grato pela ajuda desde já.
Código que contêm o erro:
//cadatrar itens pedido
modeloItensPedido mItens = new modeloItensPedido();
int codPedido;
codPedido = Convert.ToInt32(label9.Text);
int linhas = dataGridView3.RowCount;
for (int i = 0; i < linhas; i++)
{
mItens.setCodigoPedido(Convert.ToInt32(codPedido));
mItens.setCodigoCardapio(Convert.ToInt32(dataGridView2.Rows[i].Cells[0].Value.ToString()));//linha do erro
mItens.setprecoProduto(Convert.ToDecimal(dataGridView2.Rows[i].Cells[2].Value));
mItens.setquantidade(Convert.ToInt32(dataGridView2.Rows[i].Cells[3].Value));
//grava os valores dos atributos (modeloCidade) na tabela do BD
resp = cPedido.cadastraItens(mItens);
}
MessageBox.Show(resp);
Respostas
-
Olá amigo!
A propriedade RowCount da dataGridView conta todas linhas incluindo o header da grid por isso ele está dando este erro. Para contornar o problema faz o seguinte:
int linhas = dataGridView3.RowCount;
for (int i = 0; i <= linhas - 1; i++){ ...... }Espero que te ajudou.
- Sugerido como Resposta Timóteo Nkawa terça-feira, 28 de agosto de 2018 07:21
- Marcado como Resposta nomeAleatorio123 sábado, 1 de setembro de 2018 20:33
- Não Marcado como Resposta nomeAleatorio123 sábado, 1 de setembro de 2018 20:33
- Marcado como Resposta nomeAleatorio123 sábado, 1 de setembro de 2018 20:35
Todas as Respostas
-
Olá amigo!
A propriedade RowCount da dataGridView conta todas linhas incluindo o header da grid por isso ele está dando este erro. Para contornar o problema faz o seguinte:
int linhas = dataGridView3.RowCount;
for (int i = 0; i <= linhas - 1; i++){ ...... }Espero que te ajudou.
- Sugerido como Resposta Timóteo Nkawa terça-feira, 28 de agosto de 2018 07:21
- Marcado como Resposta nomeAleatorio123 sábado, 1 de setembro de 2018 20:33
- Não Marcado como Resposta nomeAleatorio123 sábado, 1 de setembro de 2018 20:33
- Marcado como Resposta nomeAleatorio123 sábado, 1 de setembro de 2018 20:35
-
-
Perguntas:
1 - Qual é o valor da variável "i" quando aparece o erro?
2 - Você pode colocar o texto da descrição do erro?
[]'s,
Fabio I. -
Saudações. Porque você esta setando valores do DataGridView2 se o for é referente ao DataGridView3?
Apenas para melhorar faça a varredura no data grid assim.
//percorrer todos os registros de um datGridView for(Int32 i = 0; i < meuDataGridView.Rows.Count; i ++) { //obtem o valor da primeira coluna(Cells[0]) de cada linha (Rows[i]) String texto = meuDataGrid.Rows[1].Cells[0].Value.ToString(); }
caso queira ver outra forma de varrer um data grid, apenas para conhecimento segue o link:
Se te ajudei não esqueça de marcar a resposta.- Editado Agnaldo Guimarães terça-feira, 28 de agosto de 2018 23:33
- Sugerido como Resposta Fabio I quarta-feira, 29 de agosto de 2018 10:41