none
Inserir dados programaticamente no datagrid com base de dados RRS feed

  • 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á

    terça-feira, 31 de maio de 2016 13:38

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
    terça-feira, 31 de maio de 2016 17:10