Error while updating page

Asked

Viewed 33 times

0

I am having an error that when updating the page her gridview runs the Rowcommand button clicked and adds again a product to the cart I created, I wonder if there is a way to block this without being javascript. Thank you.

Code of Page Load:

protected void Page_Load(object sender, EventArgs e)
    {
        CLIENTE cliente = (CLIENTE)Session["dadosUser"];
        Response.Write("<h1>" + cliente.NOME.ToUpper() + " escolha seus produtos com o melhor preço! </h1>");

        if (!Page.IsPostBack)
        {

            //Se a sessão não for nula atualiza carrinho com a lista na sessão
            if (Session["carrinhoDeCompras"] != null)
                carrinho = (List<PRODUTO>)Session["carrinhoDeCompras"];

            //Atualiza a label com a a quantidade de itens na lista carrinho
            lblNumItens.Text = "Quantidade de itens no carrinho: " + carrinho.Count;

            lerProdutos();

            Session["CarrinhoDeCompras"] = carrinho;
        }
        else
        {
            if (Session["carrinhoDeCompras"] != null)
                carrinho = (List<PRODUTO>)Session["carrinhoDeCompras"];

            lblNumItens.Text = "Quantidade de itens no carrinho: " + carrinho.Count;
        }

        //Se a quantidade de itens no carrinho for maior que zero habilita o botão que encaminha para o carrinho
        if (carrinho.Count > 0)
        {
            btnConferirCompra.Enabled = true;
        }
        else
        {
            btnConferirCompra.Enabled = false;
        }

    }

Method to read Products():

private void lerProdutos(){

            bdEntidades = new Entities();
            List<PRODUTO> listaProdutosCadastrados = bdEntidades.PRODUTOes.ToList();
            DataTable dt = new DataTable();

            dt.Columns.Add("id");
            dt.Columns.Add("nome");
            dt.Columns.Add("valor_unit");
            dt.Columns.Add("id_categoria_prod");
            dt.Columns.Add("Imagem");

            var info = from p in bdEntidades.PRODUTOes

                       join c in bdEntidades.CATEGORIA_PRODUTO
                       on p.ID_CATEGORIA_PROD equals c.ID

                       join i in bdEntidades.IMG_PRODUTO
                       on p.ID_IMAGEM equals i.ID

                       orderby p.ID

                       select new
                       {

                           p.ID,
                           p.NOME,
                           p.VALOR_UNIT,
                           c.NOME_CATEGORIA,
                           i.IMAGEM
                       };

            foreach (var produto in info)
            {

                byte[] b = produto.IMAGEM;

                String img64 = Convert.ToBase64String(b);

                //string URL = "data:image/jpg;base64,";

                //URL += img64;

                string imagemDataUrl = String.Format("data:imagem/png;base64, {0}", img64);

                dt.Rows.Add(produto.ID, produto.NOME, produto.VALOR_UNIT, produto.NOME_CATEGORIA, imagemDataUrl);
            }


            grdProdutos.DataSource = dt;
            grdProdutos.DataBind();
        }

Rowcommand :

protected void grdProdutos_RowCommand(object sender, GridViewCommandEventArgs e)
        {
                switch (e.CommandName)
                {
                    case "AddItem":
                        if (Page.IsPostBack)
                        {
                            Session["carrinhoDeComprasAntes"] = carrinho;
                            decimal idProduto = Convert.ToDecimal(e.CommandArgument);

                            bdEntidades = new Entities();
                            PRODUTO itemSelecionado = bdEntidades.PRODUTOes.Where(tb => tb.ID == idProduto).FirstOrDefault();

                            // Recupera o carrinho de compras 
                            if (Session["carrinhosDeCompras"] != null)
                                carrinho = (List<PRODUTO>)Session["carrinhoDeCompras"];

                            //Adiciona novo item
                            carrinho.Add(itemSelecionado);

                            //Guarda carrinho de compras 
                            Session["carrinhoDeCompras"] = carrinho;

                            bdEntidades.Dispose();
                            lblNumItens.Text = "Quantidade de itens no carrinho: " + carrinho.Count;

                            btnConferirCompra.Enabled = true;
                        }

                        break;
                    default:
                        break;


            }
        }
  • Gabriel, it would be easier for us to help you if you could post what you have in source code.

  • Ready. I posted.

  • I searched, but only find things related to HTTP get and post method

  • Wanted to get away from it or javascript if possible.

  • @Grabrielsouza, just to see if I got it right, you add a product, do the post and render the page with the return, but if the user gives a refresh,?

  • So I guess it’s that return part that’s causing the mistake.

  • I started to learn this part of web has 1 month or so, I still have no knowledge to check this return, but it is happening of the person give a refresh and the post be done again.

Show 2 more comments
No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.