【问题标题】:highlighting and un highlighting the button突出显示和取消突出显示按钮
【发布时间】:2015-09-27 22:43:52
【问题描述】:

我想要做的是,当用户单击按钮(“添加到购物车”)时,它会更改其颜色并更改为(“添加到购物车”),这是我设法做到的。

我的查询是当用户再次单击“添加到购物车”按钮时,突出显示关闭并返回到 (“添加到购物车”) 。一切正常,但是,当我尝试从突出显示中删除所有产品时,一个产品仍然突出显示。例如,我添加了 4 个产品,当我决定将它们从添加中删除时,一个产品保持突出显示并具有“已添加到购物车”文本。

这里是按钮点击的代码:

protected void btnAddToCart_Click(object sender, EventArgs e)
    {
        string ProductID = Convert.ToInt16((((Button)sender).CommandArgument)).ToString();
        string ProductQuantity = "1";

        DataListItem currentItem = (sender as Button).NamingContainer as DataListItem;
        Label lblAvailableStock = currentItem.FindControl("lblAvailableStock") as Label;

        if (Session["MyCart"] != null)
        {
            DataTable dt = (DataTable)Session["MyCart"];
            var checkProduct = dt.AsEnumerable().Where(r => r.Field<string>("ProductID") == ProductID); // check whether product is already added or not
            if (checkProduct.Count() == 0)
            {
                string query = "select * from Products where ProductID = " + ProductID + "";
                DataTable dtProducts = GetData(query);

                DataRow dr = dt.NewRow();
                dr["ProductID"] = ProductID;
                dr["Name"] = Convert.ToString(dtProducts.Rows[0]["Name"]);
                dr["Description"] = Convert.ToString(dtProducts.Rows[0]["Description"]);
                dr["Price"] = Convert.ToString(dtProducts.Rows[0]["Price"]);
                dr["ImageUrl"] = Convert.ToString(dtProducts.Rows[0]["ImageUrl"]);
                dr["ProductQuantity"] = ProductQuantity;
                dr["AvailableStock"] = lblAvailableStock.Text;
                dt.Rows.Add(dr);

                Session["MyCart"] = dt;
                btnIslandGas.Text = dt.Rows.Count.ToString();
            }
            else
            {
                if (checkProduct.Count() != 0)
                {
                    var ProductRowToBeDeleted = dt.Select("ProductID =" + ProductID);
                    foreach (var row in ProductRowToBeDeleted)
                    {
                        row.Delete();
                        btnIslandGas.Text = dt.Rows.Count.ToString();
                    }
                }
            }
        }
        else
        {
            string query = "select * from Products where ProductID = " + ProductID + "";
            DataTable dtProducts = GetData(query);

            DataTable dt = new DataTable(); //storing all of the records

            dt.Columns.Add("ProductID", typeof(string)); // adding the columns
            dt.Columns.Add("Name", typeof(string));
            dt.Columns.Add("Description", typeof(string));
            dt.Columns.Add("Price", typeof(string));
            dt.Columns.Add("ImageUrl", typeof(string));
            dt.Columns.Add("ProductQuantity", typeof(string));
            dt.Columns.Add("AvailableStock", typeof(string));

            DataRow dr = dt.NewRow(); //adding the rows
            dr["ProductID"] = ProductID;
            dr["Name"] = Convert.ToString(dtProducts.Rows[0]["Name"]);
            dr["Description"] = Convert.ToString(dtProducts.Rows[0]["Description"]);
            dr["Price"] = Convert.ToString(dtProducts.Rows[0]["Price"]);
            dr["ImageUrl"] = Convert.ToString(dtProducts.Rows[0]["ImageUrl"]);
            dr["ProductQuantity"] = ProductQuantity;
            dr["AvailableStock"] = lblAvailableStock.Text;  

            dt.Rows.Add(dr); //adding the data row in the data table. 

            Session["MyCart"] = dt; //asigning the datatable in the session.
            btnIslandGas.Text = dt.Rows.Count.ToString();
        }
        HighLightCartProducts();
    }

这是高亮产品的代码(工作正常)

private void HighLightCartProducts()
    {
        if (Session["MyCart"] != null)
        {
            DataTable dtProductsAddedToCart = (DataTable)Session["MyCart"];
            if (dtProductsAddedToCart.Rows.Count > 0)
            {
                foreach (DataListItem item in dlProducts.Items)
                {
                    HiddenField hfProductID = item.FindControl("hfProductID") as HiddenField; // Getting hidden filed value
                    if (dtProductsAddedToCart.AsEnumerable().Any(row => hfProductID.Value == row.Field<String>("ProductID")))
                    {
                        //item.BackColor =  System.Drawing.Color.Red;

                        Button btnAddToCart = item.FindControl("btnAddToCart") as Button; //item.FinControl finds the item(Button)
                        btnAddToCart.BackColor = System.Drawing.Color.Blue;
                        btnAddToCart.ForeColor = System.Drawing.Color.White;
                        btnAddToCart.Text = "Added to Cart";

                        Image imgGreenstar = item.FindControl("imgStar") as Image;
                        imgGreenstar.Visible = true;
                    }
                    else
                    {
                        Button btnAddToCart = item.FindControl("btnAddToCart") as Button;
                        btnAddToCart.BackColor = System.Drawing.Color.White;
                        btnAddToCart.ForeColor = System.Drawing.Color.Black;
                        btnAddToCart.Text = "Add to Cart";
                        Image imgGreenstar = item.FindControl("imgStar") as Image;
                        imgGreenstar.Visible = false;
                    }
                }
            }
        }
    }

以及取消高亮方法:

 private void RemoveHighLightCartProducts(string ProductId)
    {

        if (Session["MyCart"] != null)
        {
            DataTable dtProductsAddedToCart = (DataTable)Session["MyCart"];
            //delete row which contains product data.

            var ProductRowToBeDeleted = dtProductsAddedToCart.Select("ProductID =" + ProductId);
            foreach (var row in ProductRowToBeDeleted)
            {
                row.Delete();
            }
            foreach (DataListItem item in dlProducts.Items)
            {


                Button btnAddToCart = item.FindControl("btnAddToCart") as Button;
                btnAddToCart.BackColor = System.Drawing.Color.Red;
                btnAddToCart.ForeColor = System.Drawing.Color.White;
                btnAddToCart.Text = "Add to Cart";
                Image imgGreenstar = item.FindControl("imgStar") as Image;
                imgGreenstar.Visible = false;
            }
        }
    }

请帮帮我,我真的需要完成这项工作。谢谢你的认可。

【问题讨论】:

  • “当我尝试从突出显示中删除所有产品时”您在此步骤中在做什么
  • 我点击了 btn addtocart。 @MicrosoftDN
  • 我想做的就像facebook上的like和unlik按钮。当您第一次单击它时,它将突出显示并更改要添加到购物车的文本。第二次点击它,它会回到原来的颜色和文字(添加到购物车)@MicrosoftDN
  • 真的无法弄清楚我在这里缺少什么。总是有一个产品被突出显示但被删除但它被突出显示。请帮助我@MicrosoftDN

标签: c# button highlight


【解决方案1】:

很抱歉在这里问,但是您在哪里应用 RemoveHighLightCartProducts?从购物车中删除行后,您在 ou 之前尝试过吗?

【讨论】:

  • removehighlight 方法让用户可以取消突出显示他们不再想要的产品。
  • 是的,但你在哪里称呼它?我看到代码是如何工作的,但我找不到它在哪里被调用。每次删除一行时,都应该使用产品 ID 调用 removehigjlight 方法,例如: var ProductRowToBeDeleted = dt.Select("ProductID =" + ProductID); removehighlight(ProductID); foreach(ProductRowToBeDeleted 中的变量行)
  • 我很困惑。我现在这样做了一段时间。
  • 我编辑了我的评论,在您检查产品后,在第一个 if -> first else -> if 内,放入 RemoveHighLightCartProducts(ProductID); 并检查如果这行得通。就在 row.delete() 之后
  • 什么都没发生,先生。我插入了 RemoveHighLightCartProducts(ProductId);在 row.delete() 之后
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-22
  • 1970-01-01
  • 2019-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多