none
Exibir dados do grid view em text box RRS feed

  • Pergunta

  • Bom dia.

    Sou iniciante em programação C# e Asp.net, e estou com algumas dificuldades, uma delas é em fazer o update nos registros do banco de dados (SQL). Para realizar o update eu preciso colocar os dados que estão sendo exibidos em um grid view de volta nos text box. Consegui colocar quase todos os dados nos text box, porem possuo 3 text box com TextMod="Date", e o valor não é carregado nesses caras. Estou retornando os dados direto do grid view, mas parece que essa não é a maneira correta, o correto é fazer isso atraves de um DataSet. Vi alguns exemplos, mas não consegui fazer funcionar na minha aplicação.

    Para exibir os dados no grid view eu criei um metodo que retorna um DataTable.

    Para selecionar os dados no grid view eu adicionei uma coluna com um botão select.

    Para retornar apenas um cara eu criei um metodo que retorna um DataSet.

    Grid view - estou colocando os dados nos text box no evento do grid view, dessa maneira:

    //colocando os dados de um funcionario nos text box para serem alterados / excluidos
            protected void GridPrincipal_SelectedIndexChanged(object sender, EventArgs e)
            {
                //limpando todos os campos do formulario
                LimpaCampos(this);
                //LimpaCombos(this); // Ver como limpar os combos!!!
               
                lblId.Text = ("ID: " + GridPrincipal.SelectedRow.Cells[1].Text + " (para uso interno da aplicação)");
                txtNome.Text = GridPrincipal.SelectedRow.Cells[2].Text;
                txtNreg.Text = GridPrincipal.SelectedRow.Cells[3].Text;
                txtRamal.Text = GridPrincipal.SelectedRow.Cells[4].Text;
                ddlEmpregador.Items.Add(GridPrincipal.SelectedRow.Cells[7].Text);
                ListaArea.Items.Add(GridPrincipal.SelectedRow.Cells[5].Text);
                ddlCargo.Items.Add(GridPrincipal.SelectedRow.Cells[6].Text);
                txtDataAdm.Text = GridPrincipal.SelectedRow.Cells[8].Text;
                //se o text box estiver formatado como datetime ele é preenchido com os dados da tabela.
                //formatar a exibição do griview para ver se isso vai funcionar....
                txtDataNasc.Text = GridPrincipal.SelectedRow.Cells[11].Text;
                txtHrEntra.Text = GridPrincipal.SelectedRow.Cells[9].Text;
                txtHrSai.Text = GridPrincipal.SelectedRow.Cells[10].Text;
    
                //habilitando e desabilitando os botões
                btnExcluiFunc.Enabled = true;
                btnUpdade.Enabled = true;
                btnSave.Enabled = false;
            }


    meu metodo que preenche o grid view é o seguinte:

    //metodo para preencher o GRID VIEW
            public DataTable ListaFuncionarios()
            {
                string strSql = ("select a.ID_Func as ID, a.Nome_Func as Nome, a.Nr_Reg as 'Nº Registro', a.Ramal_Func as Ramal, c.nome_area as Área, d.nome_cargo as Cargo, b.Nome_Empregador as Empregador, a.DT_Adm as 'Data de Admissão', a.HR_Entra as 'Hr Entra', a.HR_Sai as 'Hr Sai', a.DT_Nasc as 'Data Nascimento', a.DT_Ultima_Atu as Atualizado_em from Funcionarios a, Empregador b, AreaFunc c, CargoFunc d where a.Empregador_Func = b.id_Empregador and a.Area_Func = c.id_area and a.Cargo_Func = d.id_Cargo order by Nome_Func");
                
               
                SqlConnection conn = ConetaBD.AbreConn();
    
                SqlCommand cmdListar = new SqlCommand(strSql, conn);
    
                cmdListar.CommandType = CommandType.Text;
    
                SqlDataAdapter da = new SqlDataAdapter(cmdListar);
    
                DataTable Lista = new DataTable();
    
                da.Fill(Lista);
                
                ConetaBD.FechaConn();
    
                return Lista;
            }


    e o metodo que fiz para popular os text box retorna um DataSet, tentei chamar esse metodo no evento do grid. 

    (o SELECT está em uma linha continua por que se eu quebro a linha o comando não funciona... mesmo concatenando tudo... o visual studio não marca como errado, mas qndo a aplicação é executada o comando não faz nada...)

    //metodo para colocar os dados do gri nos text box
            public DataSet PopTxt()
            {
                string strSql = ("select a.ID_Func as ID, a.Nome_Func as Nome, a.Nr_Reg as 'Nº Registro', a.Ramal_Func as Ramal, c.nome_area as Área, d.nome_cargo as Cargo, b.Nome_Empregador as Empregador, a.DT_Adm as 'Data de Admissão', a.HR_Entra as 'Hr Entra', a.HR_Sai as 'Hr Sai', a.DT_Nasc as 'Data Nascimento', a.DT_Ultima_Atu as Atualizado_em from Funcionarios a, Empregador b, AreaFunc c, CargoFunc d where a.Empregador_Func = b.id_Empregador and a.Area_Func = c.id_area and a.Cargo_Func = d.id_Cargo  and id_func = @id");
    
                SqlParameter Pid = new SqlParameter();
                Pid.ParameterName = "@id";
                Pid.Value = _ID;
    
                SqlConnection conn = ConetaBD.AbreConn();
    
                SqlCommand cmd = new SqlCommand(strSql, conn);
    
                cmd.Parameters.Add(Pid);
    
                cmd.CommandType = CommandType.Text;
    
                SqlDataAdapter da = new SqlDataAdapter(cmd);
                
                DataSet ds = new DataSet();
                
                da.Fill(ds);
    
                return ds;
            }

    Onde eu tenho que chamar esse metodo? tentei chamar ele no evento do grid view e passar o nº do ID para o metodo achar o cara no banco de dados. Mas acho que tenho que passar para o metodo a posição do registro no data set.

    Estou muito confuso com isso.

    Se alguem puder me dar umas dicas ficarei muito grato.

    Obrigado.

    segunda-feira, 23 de novembro de 2015 13:30