Usuário com melhor resposta
Como atualizar uma gridView depois de clicar em um botão que faz insert

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;
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
- Sugerido como Resposta Samuel Rodrigues dos Anjos quinta-feira, 28 de março de 2013 18:33
- Marcado como Resposta Di_carpege quinta-feira, 28 de março de 2013 18:47
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
-
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
-
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
-
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
- Editado Leonardo Couto Trindade quinta-feira, 28 de março de 2013 13:24
- Sugerido como Resposta Samuel Rodrigues dos Anjos quinta-feira, 28 de março de 2013 18:28
-
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.
-
-
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.
-
-
-
-
-
-
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(); }
-
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
- Sugerido como Resposta Samuel Rodrigues dos Anjos quinta-feira, 28 de março de 2013 18:33
- Marcado como Resposta Di_carpege quinta-feira, 28 de março de 2013 18:47
-