2010-12-02 18 views
1

ユーザーがselectリンクをクリックしたときにgridviewからproductIDを取得するために、以下のコードを記述しました。ユーザーは、この複数のクリックをクリックするとGridView内のアイテムを選択してリストに追加する

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"); 
    } 
} 

私は、リストを作成する場所が重要であれば知らない感覚

おかげ

編集が可能

・ホープ?新しいインスタンスを作成し続ける場合、クリックイベントに配置されたかどうかは不明でしたか?

は、次にバスケットページのために私が持っている:

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] ";      
    } 
} 
+0

この部分はよく見えます。選択した製品を使って何をしているのかをもう少し見ることができますか?どのようにカートの内容を保管していますか? – Marcie

答えて

1

あなたは、私はあなたがこれを行うCNAのだと思いますが、その後何の非常に有意な差がないことがない場合でも、ページの最上部に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"); 
} 
+0

ありがとう、それは完璧に働いた! – user527330

0

それはあなたがそれを保存しているところそれは、あなたの問題を引き起こしている。このラインではありません。この値をコレクションに渡していますか?

+0

私はリストに値を渡していますが、それはセッション変数に格納されます – user527330

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"]; 
    }  
} 
関連する問題