2010-12-02 6 views
1

사용자가 선택 링크를 클릭 할 때 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

List에 값을 전달하면 세션 변수에 저장됩니다. – 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"]; 
    }  
}