选择GridView中的项目并添加到列表中

时间:2010-12-02 00:01:26

标签: c# asp.net

当用户点击选择链接时,我已经编写了以下代码来从gridView获取productID

Convert.ToInt32(GridView1.SelectedDataKey.Values["productID"])))

但是,如果用户点击多次点击,则较新的值会替换之前的值。当用户点击新项目时,有没有办法继续添加到购物车列表?

希望有意义

由于

编辑:

这是购物页面的代码:

public partial class _Default : System.Web.UI.Page
{
    List<BasketClass> cart = new List<BasketClass>();

    protected void GridView1_SelectedIndexChanged1(object sender, EventArgs e)
    {
        cart.Add(new BasketClass(Convert.ToInt32(GridView1.SelectedDataKey.Values["BookID"])));

        Session.Add("CartSess", cart);
        Response.Redirect("Basket.aspx");
    }
}

我不知道创建列表的位置是否重要?如果它会继续创建一个新实例,不确定它是否被置于click事件中?

然后对于篮子页我有:

protected void Page_Init(object sender, EventArgs e)
{
    List<BasketClass> cart = (List<BasketClass>)Session["CartSess"];

    foreach (BasketClass BookID in cart)
    {     
        GridView1.DataSource = cart;
        GridView1.DataBind();
        AccessDataSource1.SelectCommand = "SELECT [BookID], [book_title] FROM [tblBook] ";                     
    }
}

3 个答案:

答案 0 :(得分:1)

你不应该在页面顶部创建BasketCart列表对象,即使你这样做也没有太大的区别,我想你可以这样做:

protected void Page_Init(object sender, EventArgs e)
{    
    if(Session["CartSess"]!=null)
    {    
       foreach (BasketClass BookID in (List<BasketClass>)Session["CartSess"])
       {     
         GridView1.DataSource = cart;
         GridView1.DataBind();
        AccessDataSource1.SelectCommand = "SELECT [BookID], [book_title] FROM [tblBook] ";                     
       }
    }
}

你的GridView甚至应该是:

protected void GridView1_SelectedIndexChanged1(object sender, EventArgs e)
{
   List<BasketClass> cart;
   if(Session["CartSess"]!=null)
   { 
       cart = (List<BasketClass>)Session["CartSess"]
   }
   else
     cart = new List<BasketClass>();

   cart.Add(new BasketClass(Convert.ToInt32(GridView1.SelectedDataKey.Values["BookID"])));

   Session.Add("CartSess", cart);
   Response.Redirect("Basket.aspx");
}

答案 1 :(得分:0)

这条线不是导致您的问题,而是存储它的地方。您是否将此值传递给集合?

答案 2 :(得分:0)

使用List<int>中保留的ViewState

public List<int> Selected
{
    set { ViewState["_selected"] = value; }
    get
    {
        if(ViewState["_selected"] == null)
            return new List<int>();

        return (List<int>)ViewState["_selected"];
    }    
}