Impedindo reenvio de dados ao atualizar página (F5) em ASP.NET
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
Curtidas 0
Melhor post
Paulo Freitas
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!
GOSTEI 4