Usuário com melhor resposta
DataGrideView Não carrega todos os Dados da tabela

Pergunta
-
Pessoal, boa noite.
Mais uma vez vou precisar da ajuda de vocês.
Seguinte:
Tenho uma tabela no Access com 5 campos (todos os campos estão com dados) e Fiz o SELECT para mostrar os dados no DataGrideView. Tudo funciona corretamente, ou seja, o comando vai no banco de dados e traz todas as informações (Dei um break point no Objeto "lista" e mostra todos os dados preenchidos). Porém quando descarrego as informações no Gride, dos 5 campos da minha tabela, somente 2 são mostrados no DataGrideView.
Se alguém poder me dar uma luz eu agradeço.
Um Abraço a todos e bom final de semana.
Respostas
-
O seu DataGridView está com a propriedade AutoGenerateColumns setada com o valor True?
- Editado Bruno Maschio Joaquim sábado, 20 de junho de 2015 03:11
- Marcado como Resposta Levi DomingosModerator quarta-feira, 24 de junho de 2015 17:09
-
Boa tarde Agapito!
Apenas para ajudar, verifique se setou a propriedade DataPropertyName das colunas do seu Datagridview exatamente como está nomeada as propriedades de sua classe. E também verifique se sua classe esta criada com propriedades (get;set;), pois o datagridview exibe somente propriedades e não atributos.
Abraços e espero ter ajudado.
Pablo Batista Cardoso
- Marcado como Resposta AgapitoJunior segunda-feira, 22 de junho de 2015 19:50
Todas as Respostas
-
O seu DataGridView está com a propriedade AutoGenerateColumns setada com o valor True?
- Editado Bruno Maschio Joaquim sábado, 20 de junho de 2015 03:11
- Marcado como Resposta Levi DomingosModerator quarta-feira, 24 de junho de 2015 17:09
-
-
Código colocado no evento do click do botão:
private void btnTeste_Click(object sender, EventArgs e)
{
try
{
IList<ordemVendaDTO> listaOrdemVenda = new List<ordemVendaDTO>();
listaOrdemVenda = new ordemVendaBLL().carregaOrdemTeste();
dataGridView1.AutoGenerateColumns = false;
dataGridView1.DataSource = listaOrdemVenda;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}Código colocado na camada de acesso a dadoa
public IList<ordemVendaDTO> carregaOrdemTeste()
{
try
{
OleDbConnection con = new OleDbConnection();
con.ConnectionString = Properties.Settings.Default.CSI;
OleDbCommand cm = new OleDbCommand();
cm.CommandType = System.Data.CommandType.Text;
cm.CommandText = "SELECT * FROM ORDEMDEVENDA ";
cm.Connection = con;
OleDbDataReader DR;
IList<ordemVendaDTO> listaOrdemVenda = new List<ordemVendaDTO>();
con.Open();
DR = cm.ExecuteReader();
if (DR.HasRows)
{
while (DR.Read())
{
ordemVendaDTO ov = new ordemVendaDTO();
ov.numOrdemVenda = Convert.ToString(DR["numOrdVenda"]);
ov.numNotaFiscal = Convert.ToString(DR["numNotaFiscal"]);
ov.datEmissao = Convert.ToDateTime(DR["datEmissaoNota"]);
ov.datVenci = Convert.ToDateTime(DR["datVenciNota"]);
ov.valorNota = Convert.ToString(DR["valorNota"]);
listaOrdemVenda.Add(ov);
}
}
return listaOrdemVenda;
}
catch (Exception ex)
{
throw ex;
}}
Obs: Quando eu coloco a propriedade AutoGenerateColumns como true, aparecem 10 campos ao invés de cinco... e da seguinte maneira 5 campos preenchidos corretamente e outros 5 campos preenchidos parcialmente. (muito doido rsrsrs)
-
Código colocado no evento do click do botão:
private void btnTeste_Click(object sender, EventArgs e)
{
try
{
IList<ordemVendaDTO> listaOrdemVenda = new List<ordemVendaDTO>();
listaOrdemVenda = new ordemVendaBLL().carregaOrdemTeste();
dataGridView1.AutoGenerateColumns = false;
dataGridView1.DataSource = listaOrdemVenda;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}Código colocado na camada de acesso a dadoa
public IList<ordemVendaDTO> carregaOrdemTeste()
{
try
{
OleDbConnection con = new OleDbConnection();
con.ConnectionString = Properties.Settings.Default.CSI;
OleDbCommand cm = new OleDbCommand();
cm.CommandType = System.Data.CommandType.Text;
cm.CommandText = "SELECT * FROM ORDEMDEVENDA ";
cm.Connection = con;
OleDbDataReader DR;
IList<ordemVendaDTO> listaOrdemVenda = new List<ordemVendaDTO>();
con.Open();
DR = cm.ExecuteReader();
if (DR.HasRows)
{
while (DR.Read())
{
ordemVendaDTO ov = new ordemVendaDTO();
ov.numOrdemVenda = Convert.ToString(DR["numOrdVenda"]);
ov.numNotaFiscal = Convert.ToString(DR["numNotaFiscal"]);
ov.datEmissao = Convert.ToDateTime(DR["datEmissaoNota"]);
ov.datVenci = Convert.ToDateTime(DR["datVenciNota"]);
ov.valorNota = Convert.ToString(DR["valorNota"]);
listaOrdemVenda.Add(ov);
}
}
return listaOrdemVenda;
}
catch (Exception ex)
{
throw ex;
}}
Obs: Quando eu coloco a propriedade AutoGenerateColumns como true, aparecem 10 campos ao invés de cinco... e da seguinte maneira 5 campos preenchidos corretamente e outros 5 campos preenchidos parcialmente. (muito doido rsrsrs)
-
-
-
Aparece 10 campos porque ela carrega os campos da tabela no teu datagridview. Como tu adicionaiste as colunas manualmente, o codigo que voce usa esta errado.
Voce tem de alimentar o datagridview nao via datasource mais sim pelas colunas que tens.
aki vai um evemplo:
private void Carregar()
{
SqlConnection connection = new SqlConnection(conecao_string());
SqlCommand comando = new SqlCommand();
comando.CommandText = "Select * from Table_Report";
comando.CommandType = CommandType.Text;
comando.Connection = connection;
connection.Open();
dt = new DataTable();
SqlDataAdapter adapter = new SqlDataAdapter();
adapter.SelectCommand = comando;
adapter.Fill(dt);
for (int j = 0; j < dt.Columns.Count; j++)
for (int i = 0; i < dt.Rows.Count; i++)
{
this.dataGridView1.Rows.Add();
this.dataGridView1.Rows[i].Cells[j].Value = dt.Rows[i][j].ToString();
}
}
outra pergunta: porque voce usa IList? voce nao esta a trabalhar com interface. So se usa IList que que trabalha com interface. Por isso troca para List<>
A flower cannot blossom without sunshine, and man cannot live without love.
-
-
Boa tarde Agapito!
Apenas para ajudar, verifique se setou a propriedade DataPropertyName das colunas do seu Datagridview exatamente como está nomeada as propriedades de sua classe. E também verifique se sua classe esta criada com propriedades (get;set;), pois o datagridview exibe somente propriedades e não atributos.
Abraços e espero ter ajudado.
Pablo Batista Cardoso
- Marcado como Resposta AgapitoJunior segunda-feira, 22 de junho de 2015 19:50
-
Pablo, você matou a charada.
Eu digitei o DataPropertyName do Gride diferente da Classe.
Valeu mesmo!!!
E muito Obrigado aos outros membros do Fórum também. Graças às dicas do Bruno, do Levi e do Gustavo, vi outras coisas no meu código que estavam erradas e consertei!
Obrigado e um abraço