Error updating page

0

I'm having an error that when updating the page its gridview executes the RowCommand of the button clicked and re-adds a product to the cart that I created, I would like to know if there is a way to block this without being javascript. Thank you.

Page Load Code:

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 readProducts ():

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;


            }
        }
    
asked by anonymous 01.12.2017 / 12:33

0 answers