我已经制作了一个简单的购物车,我已经完成了它,但问题是当有人将物品添加到它添加的购物车时,如果该物品再次添加到购物车然后将其添加为新产品,我需要如果产品已经存在,则更新产品。 任何帮助??? 此代码是在购物车视图页面的页面加载中写入的
protected void lnkBtnReadyToServeAdd_Click(object sender, EventArgs e)
{
DataTable dtCart = (DataTable)Session["sessiondtCart"];
dtCart.Rows.Add(lblProductName.Text, lblProductPrice.Text, txtQuantity.Text, imgk1.ImageUrl, int.Parse(lblProductPrice.Text) * int.Parse(txtQuantity.Text));
Session["sessiondtCart"] = dtCart;
}
在购物车中添加商品的代码
!
答案 0 :(得分:0)
我希望你能够提出一个非常基本的实现。
protected void lnkBtnReadyToServeAdd_Click(object sender, EventArgs e)
{
DataTable dtCart = (DataTable)Session["sessiondtCart"];
foreach(DataRow row in dtCart.Rows)
{
if(row["ProductName"] == lblProductName.Text) //check if already exists
{
//now we know we need to increment the quantity, because it's already in the cart
int quantity = row["TotalPrice"] / int.Parse(lblProductPrice.Text);
row["TotalPrice"] = quantity + int.Parse(txtQuantity.Text);
}
else
{
//now we know the item wasn't in the cart, so we need to add it
dtCart.Rows.Add(lblProductName.Text, lblProductPrice.Text, txtQuantity.Text, imgk1.ImageUrl, int.Parse(lblProductPrice.Text) * int.Parse(txtQuantity.Text));
}
}
Session["sessiondtCart"] = dtCart;
}
这里有几点说明。您似乎没有为您的产品使用ID,因此我们不得不依赖产品名称是唯一的。这不是很好,通常最好为每个产品分配一个唯一的ID。
您不应将价格存储在购物车中。您应该只存储ProductId和Quantity。当您想知道价格时,您应该在数据库中查找价格。否则,有人可以轻松操纵lblProductPrice
为0并免费获得产品。它还可以简化更新数量的逻辑,因为您不再需要将总价格除以获得现有数量。
最后,您正在使用整数来代价。这对于快速演示来说可能没问题。但是如果你的产品价格是3.99美元呢?您应该使用小数或双精度而不是整数。作为一个整数,数量可能很好,因为大部分时间你都不会有小数量。