Выбор элемента в GridView и добавление в список - PullRequest
1 голос
/ 02 декабря 2010

Я написал фрагмент кода ниже, чтобы получить 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");
    }
}

Не знаюзнаете, важно ли место создания списка?Не был уверен, было ли оно помещено в событие 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 ]

1 голос
/ 02 декабря 2010

Вы не должны создавать объект списка 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 голосов
/ 02 декабря 2010

использовать 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"];
    }    
}
0 голосов
/ 02 декабря 2010

Не эта строка вызывает вашу проблему, это место, где вы ее храните. Вы передаете это значение в коллекцию?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...