ASP.NET C中的GridView for Shopping Cart#

时间:2015-09-20 14:50:07

标签: c# asp.net gridview

我已经制作了一个简单的购物车,我已经完成了它,但问题是当有人将物品添加到它添加的购物车时,如果该物品再次添加到购物车然后将其添加为新产品,我需要如果产品已经存在,则更新产品。 任何帮助??? 此代码是在购物车视图页面的页面加载中写入的

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;

        }

在购物车中添加商品的代码

!

1 个答案:

答案 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美元呢?您应该使用小数或双精度而不是整数。作为一个整数,数量可能很好,因为大部分时间你都不会有小数量。