I have a problem, I have a grindview with products, every time I add a product in the stamp it adds, but if I click on F5 it adds the new data to the cart.
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;
}
}
}
}