Usuário com melhor resposta
Inserir dados programaticamente no datagrid com base de dados

Pergunta
-
Senhores,
Bom dia, estou com alguns problemas para inserir dados programaticamente no datagrid quando já se tem uma base de dados já carregada, poderiam me ajudar a respeito.
Código utilizado logo abaixo:private void frm_list_proposta_Load(object sender, EventArgs e) { ConnectionFactory conn = new ConnectionFactory(); OleDbConnection connect = new OleDbConnection(); try { //COMANDO SQL string sql = "SELECT proposta, nome_cliente, email, item, modelo, subcontratado, lider, status_506, status_442, status_529, status_533, status_EE, status_3GPP, status_emc, status_calibracao, cronograma FROM [Projetos$] where proposta <> '' "; OleDbCommand cmd = new OleDbCommand(sql, conn.connection()); //ABRINDO CONEXÃO COM O BANCO connect = conn.connection(); connect.Open(); cmd.CommandType = CommandType.Text; OleDbDataAdapter adapter = new OleDbDataAdapter(cmd); //CARREGANDO DATATABLE DataTable dt = new DataTable(); adapter.Fill(dt); //POPULANDO DATAGRID dtPropostas.DataSource = dt; //RENOMEANDO HEADERS dtPropostas.Columns["proposta"].HeaderText = "Proposta"; dtPropostas.Columns["nome_cliente"].HeaderText = "Cliente"; dtPropostas.Columns["email"].HeaderText = "Email"; dtPropostas.Columns["item"].HeaderText = "Item"; dtPropostas.Columns["modelo"].HeaderText = "Modelo"; dtPropostas.Columns["subcontratado"].HeaderText = "Subcontratado"; dtPropostas.Columns["lider"].HeaderText = "Lider"; dtPropostas.Columns["status_506"].HeaderText = "Res. 506"; dtPropostas.Columns["status_442"].HeaderText = "Res. 442"; dtPropostas.Columns["status_529"].HeaderText = "Res. 529"; dtPropostas.Columns["status_533"].HeaderText = "Res. 533"; dtPropostas.Columns["status_EE"].HeaderText = "Eficiência E"; dtPropostas.Columns["status_3GPP"].HeaderText = "3GPP"; dtPropostas.Columns["status_emc"].HeaderText = "EMC"; dtPropostas.Columns["status_calibracao"].HeaderText = "Calibração"; dtPropostas.Columns["cronograma"].HeaderText = "Cronograma"; //TETANDO INSERIR DATA PROGRAMATICAMENTE //OS VALORES RETORNAM E VIA DEBUG LINHA A LINHA APARECE COMO SE A LINHA ESTIVESSEM SENDO POPULADA //MAS NA EXIBIÇÃO NÃO OBTENHO RETORNO. string dataAtual = DateTime.Today.Date.ToString("dd/MM/yy"); for (int i = 0; i < dtPropostas.RowCount; i++) { dtPropostas.Rows[i].Cells[0].Value = dataAtual; } } catch (Exception ex) { MessageBox.Show("" + ex); } finally { connect.Close(); } }
Todo esse código é realizado no load do form, busco os dados no banco, realizo a inserção de dados no grid para exibição apenas, mas na hora de inserir a data atual na coluna com indice [0] os dados não são exibidos
Obrigado desde já
Respostas
-
Não resolvi apagar esta dúvida pois achei que pode ser a dúvida de mais alguém, a solução que busquei foi adicionar o campo ao datatable antes de exibir no datagrid, com o campo adicionado ao datatable fica mais facil de manipular.
segue abaixo como ficou o código.
private void frm_list_proposta_Load(object sender, EventArgs e) { ConnectionFactory conn = new ConnectionFactory(); OleDbConnection connect = new OleDbConnection(); try { //COMANDO SQL string sql = "SELECT proposta, nome_cliente, email, item, modelo, subcontratado, lider, status_506, status_442, status_529, status_533, status_EE, status_3GPP, status_emc, status_calibracao, cronograma FROM [Projetos$] where proposta <> '' "; OleDbCommand cmd = new OleDbCommand(sql, conn.connection()); //ABRINDO CONEXÃO COM O BANCO connect = conn.connection(); connect.Open(); cmd.CommandType = CommandType.Text; OleDbDataAdapter adapter = new OleDbDataAdapter(cmd); //CARREGANDO DATATABLE DataTable dt = new DataTable(); adapter.Fill(dt); string dataAtual = DateTime.Today.Date.ToString("dd/MM/yy"); //ADICIONANDO COLUNA DESEJADA AO DATATABLE dt.Columns.Add("data_atual", typeof(string)); //ADICIONANDO VALORES AO DATATABLE NO CAMPO DESEJADO for (int i = 0; i < dt.Rows.Count; i++) { dt.Rows[i]["data_atual"] = dataAtual; } //POPULANDO DATAGRID dtPropostas.DataSource = dt; //RENOMEANDO HEADERS dtPropostas.Columns["proposta"].HeaderText = "Proposta"; dtPropostas.Columns["nome_cliente"].HeaderText = "Cliente"; dtPropostas.Columns["email"].HeaderText = "Email"; dtPropostas.Columns["item"].HeaderText = "Item"; dtPropostas.Columns["modelo"].HeaderText = "Modelo"; dtPropostas.Columns["subcontratado"].HeaderText = "Subcontratado"; dtPropostas.Columns["lider"].HeaderText = "Lider"; dtPropostas.Columns["status_506"].HeaderText = "Res. 506"; dtPropostas.Columns["status_442"].HeaderText = "Res. 442"; dtPropostas.Columns["status_529"].HeaderText = "Res. 529"; dtPropostas.Columns["status_533"].HeaderText = "Res. 533"; dtPropostas.Columns["status_EE"].HeaderText = "Eficiência E"; dtPropostas.Columns["status_3GPP"].HeaderText = "3GPP"; dtPropostas.Columns["status_emc"].HeaderText = "EMC"; dtPropostas.Columns["status_calibracao"].HeaderText = "Calibração"; dtPropostas.Columns["cronograma"].HeaderText = "Cronograma"; } catch (Exception ex) { MessageBox.Show("" + ex); } finally { connect.Close(); } }
- Marcado como Resposta Brian Robert terça-feira, 31 de maio de 2016 17:10