如何将会话数据绑定到购物车的 gridview

How to bind session data to gridview for shopping cart

我不确定这是不是最好的方法,但我将购物车数据存储在字典中。我想将数据绑定到 gridview 并在 aspx 页面中使用。

不知何故,我们可以在aspx页面的gridview中使用<%# Eval("product_id") %>吗?

设置词典

public Dictionary<int, Product> products = null;

购物车:

products = new Dictionary<int, Product>();

使用此代码读取数据:

Cart mycart = (Cart)Session["activecart"];
            double GeneralTotal = 0; 
            foreach (int i in mycart.products.Keys)
            {
                Response.Write(mycart.products[i].product_id);
                Response.Write(mycart.products[i].product_name);
                Response.Write(mycart.products[i].product_price);
                Response.Write(mycart.products[i].product_quantity);
                Response.Write(mycart.products[i].total_price);
                GeneralTotal += mycart.products[i].total_price;
            }
            Response.Write(GeneralTotal);

我可以使用 foreach 读取值,但我想使用 Eval 在 gridview 中显示这些数据。

我试过这段代码来绑定 gridview:

Cart activeCart = (Cart)HttpContext.Current.Session["activecart"];
gridview1.DataSource =  activeCart.products;
gridview1.DataBind();

这只是从字典中获取键值变量。无法使用 <%#Eval("custom") %> 获取特定值。有什么建议吗?

我会这样做:

Cart mycart = (Cart)Session["activecart"];
double GeneralTotal = 0; 

DataTable tempBasket = new DataTable();
DataRow rowTempBasket;
tempBasket.Columns.Add("product_id", typeof (int));
//Add the other columns  the same way

foreach (int i in mycart.products.Keys)
{
     rowTempBasket = tempBasket.NewRow();
     rowTempBasket["product_id"] = mycart.products[i].product_id;
     //Add the other columns the same way

     tempBasket.Rows.Add(rowTempBasket);
}

//Then DataBind the created table to your GridView
gridview1.DataSource = tempBasket; 
gridview1.DataBind(); 

那你应该可以使用Eval了。

编辑

也许您 post 您的 ASPX 页面的代码。将有助于如何处理总计。