none
Como atualizar uma gridView depois de clicar em um botão que faz insert RRS feed

  • Pergunta

  • Essa é minha grid e qual eu clico em confirma na edição 

    aparece a mensagem como eu queria porem as grid somem assim:

       int LinhasAfetadas = oBD.ExecutaDados("UPDATE ver_mod SET  ver_mod_nome ='" + txtVersao.Text + "', ver_mod_descri='" + txtDescricaodaVersao.Text + "', ver_mod_dt_prazo = '" + (string.IsNullOrEmpty(DataPrazoVersao.ToString("yyyy-MM-dd hh:mm:ss.fff")) ? "" + DataPrazoVersao.ToString("yyyy-MM-dd hh:mm:ss.fff") + "" : "' + NULL + '") + "', ver_mod_dt_liberado ='" + (string.IsNullOrEmpty(DataLiberacaoVersao.ToString("yyyy-MM-dd hh:mm:ss.fff")) ? "" + DataLiberacaoVersao.ToString("yyyy-MM-dd hh:mm:ss.fff") + "" : "' + NULL + '") + "' WHERE ver_mod_id = '" + txtIdVersao.Text + "'");
                                //Alerta de sucesso
                                String _message = "window.alert('Registro alterado com sucesso.');";//Alerta
                                Page.ClientScript.RegisterStartupScript(this.GetType(), "Inform", _message, true);
                                lblMsgErro.Visible = false;
                                gdvModulo.DataBind();
                                gdvVersao.DataBind();
                                pnlBotao.Visible = false;

    quarta-feira, 27 de março de 2013 15:22

Respostas

  • Cara,

    Tente fazer isso:

    protected void Page_Load(object sender, EventArgs e)
    {
               preenchergrid();
    }
    
    protected void btnConfirma_Click(object sender, EventArgs e)
    {
                if (!string.IsNullOrEmpty(Session["sIDModulo"].ToString())) //ID Módulo preenchido, significa UPDATE de módulo
                {
                    #region [UPDATE do modulo]
                    try
                    {
                          DataTable dt = new DataTable();
                        //Instanciando	toda vez que for usar a classe
                        clsDBClass oBD = new clsDBClass();
                        //Metodo ExecutaDados
                        int LinhasAfetadas = oBD.ExecutaDados("UPDATE modulo SET  mod_nome ='" + txtNome.Text + "', sist_id=" + ddlSistema.Text + ",  mod_descricao ='" + txtDescricao.Text + "' WHERE mod_id = " + lblId0.Text + "");
    
                        preenchergrid();
    
                        //Alerta de sucesso
                        String _message = "window.alert('Registro alterado com sucesso.');";//Alerta
                        Page.ClientScript.RegisterStartupScript(this.GetType(), "Inform", _message, true);
                        lblMsgErro.Visible = false;
    }
     catch
                    {
                        lblMsgErro.Text = "Ocorreu um erro ao altualizar o modulo.";//Mesanfem de Erro
                        lblMsgErro.Visible = true;//Campo Visivel
                        pnlTblSistemaeVersao.Visible = true;//Campo Visivel
                        pnlVersao.Visible = true;//Campo Visivel
                        pnlTblModulo.Visible = true;//Campo Visivel
                    }
    
    private void preenchergrid()
    {
                  clsDBClass oBD = new clsDBClass();//Instanciando	
                  DataTable dt = new DataTable();
                  dt.Load(oBD.RetornaDados("SELECT  modulo.mod_id AS [ID],sistema.sist_nome AS [Sistema], modulo.mod_nome AS [Nome], modulo.mod_descricao AS [Descrição] FROM modulo INNER JOIN sistema ON modulo.sist_id = sistema.sist_id"));//Carregando a Grid Modulo
                  gdvModulo.DataSource = dt;
                  gdvModulo.DataBind();
    
    }

    Observe que no seu método preenche grid você faz isso:

    gdvModulo.DataSource = dt;
    gdvVersao.DataBind();

    Sendo que são grids diferentes, observe os nome.

    gdvModulo.DataSource = dt;
    gdvModulo.DataBind();
    
    
    gdvVersao.DataSource = dt;
    gdvVersao.DataBind();


    Atenciosamente, Samuel dos Anjos

    quinta-feira, 28 de março de 2013 18:33

Todas as Respostas

  • faz um método para carregar a gridview e depois de garvar chama esse metodo

    tipo assim

    private void preenchergrid()

    {

       carrega seu gridview

    }


    Junior


    • Editado Junior_luiz quarta-feira, 27 de março de 2013 15:31
    quarta-feira, 27 de março de 2013 15:24
  • Sou iniciante como eu faço isso, se essa informações ja vem de um banco de dados
    • Editado Di_carpege quarta-feira, 27 de março de 2013 18:08
    quarta-feira, 27 de março de 2013 17:55
  • vc carrega o gridview com dados do banco não é isso ? vc deve fazer isso no load da página, então basta vc copiar como vc esta preenchendo o gridview tirar de lá e colocar dentro de um método e colocar a chamada desse método no lugar onde vc carrega a gridview, entendeu ?

    Junior

    quarta-feira, 27 de março de 2013 18:27
  • Olá Diego,

    Pelo que me parece no código que você postou, voucê está executando DataBind() sem chamar informar o DataSource, nesse caso virá o grid sem informações, tente chamar:

    int LinhasAfetadas = oBD.ExecutaDados("UPDATE ver_mod SET ver_mod_nome ='" + txtVersao.Text + "', ver_mod_descri='" + txtDescricaodaVersao.Text + "', ver_mod_dt_prazo = '" + (string.IsNullOrEmpty(DataPrazoVersao.ToString("yyyy-MM-dd hh:mm:ss.fff")) ? "" + DataPrazoVersao.ToString("yyyy-MM-dd hh:mm:ss.fff") + "" : "' + NULL + '") + "', ver_mod_dt_liberado ='" + (string.IsNullOrEmpty(DataLiberacaoVersao.ToString("yyyy-MM-dd hh:mm:ss.fff")) ? "" + DataLiberacaoVersao.ToString("yyyy-MM-dd hh:mm:ss.fff") + "" : "' + NULL + '") + "' WHERE ver_mod_id = '" + txtIdVersao.Text + "'"); //Alerta de sucesso String _message = "window.alert('Registro alterado com sucesso.');";//Alerta Page.ClientScript.RegisterStartupScript(this.GetType(), "Inform", _message, true); lblMsgErro.Visible = false;

    gdvModulo.DataSource = fonteDeDados; gdvModulo.DataBind();

    gdvVersao.DataSource = fonteDeDados; gdvVersao.DataBind(); pnlBotao.Visible = false;

    Espero ter ajudado!

    Atenciosamente,

    Leonardo Trindade

    MCT/MCSD Web Developer/MCPD/MCTS/MCP/ITIL V3

    Blog Técnico: leonardotrindade.net


    quinta-feira, 28 de março de 2013 13:23
  • Ola Leonardo,

    Não deu certo dessa maneira.

    Criei um método pra preencher a grid assim como Junior_luiz me mostrou porem uma grid funciona atualiza

    normalmente se eu edito mas a primeira não atualiza. esse é meu método;

            private void preenchergrid()
    
              {
                  clsDBClass oBD = new clsDBClass();//Instanciando	
                  DataTable dt = new DataTable();
                  dt.Load(oBD.RetornaDados("SELECT  modulo.mod_id AS [ID],sistema.sist_nome AS [Sistema], modulo.mod_nome AS [Nome], modulo.mod_descricao AS [Descrição] FROM modulo INNER JOIN sistema ON modulo.sist_id = sistema.sist_id"));//Carregando a Grid Modulo
                  gdvModulo.DataSource = dt;
                  gdvVersao.DataBind();
    
                 
            }
    
            private void preenchergridver()
            {
                clsDBClass oBD = new clsDBClass();//Instanciando	
                DataTable dt = new DataTable();
                dt.Load(oBD.RetornaDados("SELECT  modulo.mod_id AS [ID Modulo], ver_mod.ver_mod_id AS [ID Versão], ver_mod.ver_mod_nome AS[Nome], ver_mod.ver_mod_descri AS [Descrição], ver_mod.ver_mod_dt_prazo AS [Prazo], ver_mod.ver_mod_dt_liberado AS [Data de Liberação] FROM modulo INNER JOIN ver_mod ON modulo.mod_id = ver_mod.mod_id WHERE (modulo.mod_id = '" + selec + "')"));//Carregando a Grid versao
                gdvVersao.DataSource = dt;
                gdvVersao.DataBind();
             
            }

    e chamo o método logo depois que faço alteração; cada método no seu devido lugar.

    quinta-feira, 28 de março de 2013 15:10
  • Cara ta meio confuso,

    Vamos ver se eu entendi, Quando a página carrega os dados são exibidos, quando você atualiza alguma dados, ela atualiza, porém não mostra no grid view? é isso?

    quinta-feira, 28 de março de 2013 15:37
  • Vamos la vou tentar explicar passo a passo:

    Olhe a imagem la do primeiro post, então tenho essa duas grid e ao clicar em  abre uma tela de edição da grid com os campos devidamente preenchidos, quando eu clico em confirmar gostaria que atualizasse minha grid de acordo com oq modifiquei , a segunda grid esta atualizando normalmente quando clico em confirmar, a primeira se eu clico no  ela abre a telinha de edição do mesma forma que a segunda porem a primeira não esta atualizando. Gostaria de saber o porque se o método que criei pra atualiza da segunda grid atualiza e da primeira não.

    quinta-feira, 28 de março de 2013 15:52
  • Então vc está chamando o método que exibe a grid depois de atualizar? é o mesmo que está no Load da página?
    quinta-feira, 28 de março de 2013 15:57
  • isso da primeira grid é
    quinta-feira, 28 de março de 2013 16:00
  • no banco de dados ta atualizando os dados ou não?
    quinta-feira, 28 de março de 2013 16:55
  • sim no banco de dados atualiza
    quinta-feira, 28 de março de 2013 17:17
  • cara, se vc está chamando o método que faz o select do banco e exibe no grid depois de fazer o update, deveria estar atualizndo, posta o código inteiro aê
    quinta-feira, 28 de março de 2013 17:49
  •   protected void Page_Load(object sender, EventArgs e)
            {
               clsDBClass oBD = new clsDBClass();//Instanciando	
                    DataTable dt = new DataTable();
                    dt.Load(oBD.RetornaDados("SELECT  modulo.mod_id AS [ID],sistema.sist_nome AS [Sistema], modulo.mod_nome AS [Nome], modulo.mod_descricao AS [Descrição] FROM modulo INNER JOIN sistema ON modulo.sist_id = sistema.sist_id"));//Carregando a Grid Modulo
                    gdvModulo.DataSource = dt;
                    gdvModulo.DataBind();
    
     
    
                }
    
      protected void btnConfirma_Click(object sender, EventArgs e)
            {
                if (!string.IsNullOrEmpty(Session["sIDModulo"].ToString())) //ID Módulo preenchido, significa UPDATE de módulo
                {
                    #region [UPDATE do modulo]
                    try
                    {
                          DataTable dt = new DataTable();
                        //Instanciando	toda vez que for usar a classe
                        clsDBClass oBD = new clsDBClass();
                        //Metodo ExecutaDados
                        int LinhasAfetadas = oBD.ExecutaDados("UPDATE modulo SET  mod_nome ='" + txtNome.Text + "', sist_id=" + ddlSistema.Text + ",  mod_descricao ='" + txtDescricao.Text + "' WHERE mod_id = " + lblId0.Text + "");
                        //Alerta de sucesso
                        String _message = "window.alert('Registro alterado com sucesso.');";//Alerta
                        Page.ClientScript.RegisterStartupScript(this.GetType(), "Inform", _message, true);
                        lblMsgErro.Visible = false;
                        preenchergrid();
    }
     catch
                    {
                        lblMsgErro.Text = "Ocorreu um erro ao altualizar o modulo.";//Mesanfem de Erro
                        lblMsgErro.Visible = true;//Campo Visivel
                        pnlTblSistemaeVersao.Visible = true;//Campo Visivel
                        pnlVersao.Visible = true;//Campo Visivel
                        pnlTblModulo.Visible = true;//Campo Visivel
                    }
    
     private void preenchergrid()
    
              {
                  clsDBClass oBD = new clsDBClass();//Instanciando	
                  DataTable dt = new DataTable();
                  dt.Load(oBD.RetornaDados("SELECT  modulo.mod_id AS [ID],sistema.sist_nome AS [Sistema], modulo.mod_nome AS [Nome], modulo.mod_descricao AS [Descrição] FROM modulo INNER JOIN sistema ON modulo.sist_id = sistema.sist_id"));//Carregando a Grid Modulo
                  gdvModulo.DataSource = dt;
                  gdvVersao.DataBind();
    
                 
            }

    quinta-feira, 28 de março de 2013 17:53
  • Cara,

    Tente fazer isso:

    protected void Page_Load(object sender, EventArgs e)
    {
               preenchergrid();
    }
    
    protected void btnConfirma_Click(object sender, EventArgs e)
    {
                if (!string.IsNullOrEmpty(Session["sIDModulo"].ToString())) //ID Módulo preenchido, significa UPDATE de módulo
                {
                    #region [UPDATE do modulo]
                    try
                    {
                          DataTable dt = new DataTable();
                        //Instanciando	toda vez que for usar a classe
                        clsDBClass oBD = new clsDBClass();
                        //Metodo ExecutaDados
                        int LinhasAfetadas = oBD.ExecutaDados("UPDATE modulo SET  mod_nome ='" + txtNome.Text + "', sist_id=" + ddlSistema.Text + ",  mod_descricao ='" + txtDescricao.Text + "' WHERE mod_id = " + lblId0.Text + "");
    
                        preenchergrid();
    
                        //Alerta de sucesso
                        String _message = "window.alert('Registro alterado com sucesso.');";//Alerta
                        Page.ClientScript.RegisterStartupScript(this.GetType(), "Inform", _message, true);
                        lblMsgErro.Visible = false;
    }
     catch
                    {
                        lblMsgErro.Text = "Ocorreu um erro ao altualizar o modulo.";//Mesanfem de Erro
                        lblMsgErro.Visible = true;//Campo Visivel
                        pnlTblSistemaeVersao.Visible = true;//Campo Visivel
                        pnlVersao.Visible = true;//Campo Visivel
                        pnlTblModulo.Visible = true;//Campo Visivel
                    }
    
    private void preenchergrid()
    {
                  clsDBClass oBD = new clsDBClass();//Instanciando	
                  DataTable dt = new DataTable();
                  dt.Load(oBD.RetornaDados("SELECT  modulo.mod_id AS [ID],sistema.sist_nome AS [Sistema], modulo.mod_nome AS [Nome], modulo.mod_descricao AS [Descrição] FROM modulo INNER JOIN sistema ON modulo.sist_id = sistema.sist_id"));//Carregando a Grid Modulo
                  gdvModulo.DataSource = dt;
                  gdvModulo.DataBind();
    
    }

    Observe que no seu método preenche grid você faz isso:

    gdvModulo.DataSource = dt;
    gdvVersao.DataBind();

    Sendo que são grids diferentes, observe os nome.

    gdvModulo.DataSource = dt;
    gdvModulo.DataBind();
    
    
    gdvVersao.DataSource = dt;
    gdvVersao.DataBind();


    Atenciosamente, Samuel dos Anjos

    quinta-feira, 28 de março de 2013 18:33
  • Erro Besta ... valeu obrigado

    quinta-feira, 28 de março de 2013 18:47