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;
}
}