选择一个项目在GridView和添加到列表 [英] Selecting an item in a GridView and adding to the List
问题描述
我已经写了一张code以下获得的productID
从一个GridView时,选择链接用户点击。
Convert.ToInt32(GridView1.SelectedDataKey.Values [的productID])))
但是,如果用户点击超过了这个点击较新的值替换previous。有没有一种方法,以不断增加的车列表,当用户点击一个新的项目?
希望是有道理的。
感谢
编辑:
下面是我的code的购物页面:
公共部分类_Default:System.Web.UI.Page
{
清单< BasketClass>购物车=新的List< BasketClass>(); 保护无效GridView1_SelectedIndexChanged1(对象发件人,EventArgs的发送)
{
cart.Add(新BasketClass(Convert.ToInt32(GridView1.SelectedDataKey.Values [的BookID]))); Session.Add(CartSess车);
的Response.Redirect(Basket.aspx);
}
}
我不知道如果在创建列表的位置是非常重要的?如果它被放置在click事件是否会继续创造一个新的实例不知道?
然后在篮页面我有:
保护无效Page_Init(对象发件人,EventArgs的发送)
{
清单< BasketClass>购物车=(列表< BasketClass>)会议[CartSess]; 的foreach(BasketClass的BookID在车)
{
GridView1.DataSource =车;
GridView1.DataBind();
AccessDataSource1.SelectCommand =SELECT [的BookID] FROM [tblBook] [BOOK_TITLE];
}
}
您不应该在网页的顶部创建BasketCart列表对象,即使你做的那么有没有很显著的区别,我想你中央社做到这一点
保护无效Page_Init(对象发件人,EventArgs的发送)
{
如果(会话[CartSess]!= NULL)
{
的foreach(BasketClass的BookID在(列表< BasketClass>)会议[CartSess])
{
GridView1.DataSource =车;
GridView1.DataBind();
AccessDataSource1.SelectCommand =SELECT [的BookID] FROM [tblBook] [BOOK_TITLE];
}
}
}
和你的GridView甚至应该是:
保护无效GridView1_SelectedIndexChanged1(对象发件人,EventArgs的发送)
{
清单< BasketClass>大车;
如果(会话[CartSess]!= NULL)
{
购物车=(列表< BasketClass>)会议[CartSess]
}
其他
购物车=新的List< BasketClass>(); cart.Add(新BasketClass(Convert.ToInt32(GridView1.SelectedDataKey.Values [的BookID]))); Session.Add(CartSess车);
的Response.Redirect(Basket.aspx);
}
I have written the piece of code below to get a productID
from a gridView when the user clicks on the select link.
Convert.ToInt32(GridView1.SelectedDataKey.Values["productID"])))
However, if a user clicks on this more than one click the newer value replaces the previous. Is there a way to keep adding to the cart list when the user clicks on a new item?
Hope that makes sense
Thanks
Edit:
Here's my code for the Shopping Page:
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");
}
}
I dont know if the location of creating the list is important? Wasn't sure if it was placed in the click event if it would keep creating a new instance?
Then for the Basket Page I have:
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] ";
}
}
You should not create BasketCart list object in the top of page, even if you do that then there is no very much significant difference, i think you cna do this:
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] ";
}
}
}
and your GridView even should be:
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");
}
这篇关于选择一个项目在GridView和添加到列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!