I have a GridView with certain products and a Quantity DropDown for each.
In an event onClick
, the products with quantity > 0.
The problem is when I have a table "order details", and I invoke it with Linq to SQL. My goal was to compare if she has the item in question. If you have, add only the quantity. If not, add the item and price.
Follow the code:
foreach (GridViewRow row in GridView1.Rows)
{
// Pegando os produtos
Label lblProdutoID = row.FindControl("lblProdutoID") as Label;
var preco = (from p in db.Produtos
where p.ProdutoID == Convert.ToInt32(lblProdutoID.Text)
select p.Preco).SingleOrDefault();
var produto = (from p in db.Produtos
where p.ProdutoID == Convert.ToInt32(lblProdutoID.Text)
select p).SingleOrDefault();
int dropDownListText = Convert.ToInt32(((DropDownList)row.FindControl("ddlQtde")).SelectedItem.Value);
if ((dropDownListText != 0))
{
// aqui pegamos os produtos caso tenha no detalhes do pedido
var nte = (from p in db.DetalhesPedidos
where p.PedidoID == Convert.ToInt32(Session["pedido"])
where p.ProdutoID == Convert.ToInt32(lblProdutoID.Text)
select p).SingleOrDefault();
if (nte == null)
{
DetalhesPedido dp = new DetalhesPedido
{
UsuarioID = usurioid,
PedidoID = novopedido.PedidoID,
ProdutoID = produto.ProdutoID,
Qtde = Convert.ToInt32(dropDownListText),
Preco = Convert.ToDecimal(produto.Preco),
Total = Convert.ToDecimal(produto.Preco * Convert.ToDecimal(dropDownListText)),
};
db.DetalhesPedidos.InsertOnSubmit(dp);
db.SubmitChanges();
}
else if (nte.ProdutoID == produto.ProdutoID)
{
nte.Qtde += dropDownListText;
nte.Total = produto.Preco * nte.Qtde;
db.SubmitChanges();
}
}
}