Impedindo reenvio de dados ao atualizar página (F5) em ASP.NET
21/11/2017
0
Estou com um problema, tenho um grindview com produtos, toda vez que add um produto no carimbo ele add, mas se eu clicar no F5 ele adiciona o dado novamento no carrinho.
public partial class carrinho : System.Web.UI.Page { ProjetoContext bd = null; public static double valorTotal = 0; protected void Page_Load(object sender, EventArgs e) { if(!Page.IsPostBack) { GridView1.DataSource = (List<PRODUTO>)Session["carrinhoDeCompras"]; recuperarValor(); GridView1.DataBind(); } } private void recuperarValor() { List<PRODUTO> carrinho = (List<PRODUTO>)Session["carrinhoDeCompras"]; valorTotal = 0; foreach(PRODUTO produto in carrinho) { valorTotal += Convert.ToDouble(produto.VALOR_UNIT); if(carrinho.Count() == 0) { valorTotal = 0; } } txtValorTotal.Text = "Valor Total da Compra: " + "R$ " + Convert.ToDouble(valorTotal).ToString(); } protected void btnfinal_Click(object sender, EventArgs e) { InserirNotaFiscal(); } private void InserirNotaFiscal() { bd = new ProjetoContext(); NOTA_FISCAL nf = new NOTA_FISCAL(); int id = Convert.ToInt16(Session["Id"]); //Passando os dados que serão adicionado ao banco de dados; if(valorTotal != 0) { nf.ID_CLIENTE = Convert.ToInt32(id); nf.VALOR_TOTAL = Convert.ToDecimal(valorTotal); nf.CD_NOTA = Convert.ToInt32((bd.NOTA_FISCAL.Count() + 1) * 100); List<PRODUTO> listProduto = (List<PRODUTO>)Session["carrinhoDeCompras"]; nf.PRODUTOes = new List<PRODUTO>(); foreach (PRODUTO prod in listProduto) { PRODUTO produto = bd.PRODUTOes.Where(p => p.ID == prod.ID).FirstOrDefault(); //PRODUTO produto = prod; bd.PRODUTOes.Attach(produto); nf.PRODUTOes.Add(produto); } Session["idNotaFiscal"] = nf.ID; //Adicionando ao Banco de Dados bd.NOTA_FISCAL.Add(nf); //Salvando mudanças no banco de dados bd.SaveChanges(); bd.Dispose(); } } protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) { switch (e.CommandName) { case "removeItem": decimal idProduto = Convert.ToDecimal(e.CommandArgument); List<PRODUTO> carrinho = (List<PRODUTO>)Session["carrinhoDeCompras"]; foreach(PRODUTO c in carrinho) { if(c.ID == idProduto) { carrinho.Remove(c); break; } } Session["carrinhoDeCompras"] = carrinho; GridView1.DataSource = (List<PRODUTO>)Session["carrinhoDeCompras"]; recuperarValor(); GridView1.DataBind(); break; default: break; } } } }
Antônio Junior
Curtir tópico
+ 0
Responder
Post mais votado
21/11/2017
Olá Antônio,
Acredito que o problema está na validação do isPostBack.
Segue um link que pode te ajudar:
https://forums.asp.net/t/1454208.aspx?what+is+the+value+of+Page+IsPostBack+when+user+Pressed+F5+
isPostBack Refresh
Abraço!
Acredito que o problema está na validação do isPostBack.
Segue um link que pode te ajudar:
https://forums.asp.net/t/1454208.aspx?what+is+the+value+of+Page+IsPostBack+when+user+Pressed+F5+
isPostBack Refresh
Abraço!
Paulo Freitas
Responder
Clique aqui para fazer login e interagir na Comunidade :)