C# 在GridView中选择项目并添加到列表
我在下面编写了一段代码,以便在用户单击select链接时从gridView获取C# 在GridView中选择项目并添加到列表,c#,asp.net,C#,Asp.net,我在下面编写了一段代码,以便在用户单击select链接时从gridView获取productID Convert.ToInt32(GridView1.SelectedDataKey.Values[“productID]”)格式) 但是,如果用户多次单击此项,则较新的值将替换以前的值。当用户单击一个新项目时,是否有办法继续添加到购物车列表中 希望这是有道理的 谢谢 编辑: 以下是我的购物页面代码: public partial class _Default : System.Web.UI.Page
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");
}
}
public分部类\u默认值:System.Web.UI.Page
{
列表购物车=新列表();
受保护的void gridview 1\u SelectedIndexChanged1(对象发送方,事件参数e)
{
添加(新的BasketClass(转换为32(GridView1.SelectedDataKey.Values[“BookID]”));
添加(“cartses”,cart);
响应重定向(“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] ";
}
}
受保护的无效页\u Init(对象发送方,事件参数e)
{
列表购物车=(列表)会话[“购物车”];
foreach(购物车中的BasketClass BookID)
{
GridView1.DataSource=购物车;
GridView1.DataBind();
AccessDataSource1.SelectCommand=“从[tblBook]中选择[BookID]、[book\u title]”;
}
}
不是这一行导致您的问题,而是您存储它的地方。是否将此值传递到集合中?导致问题的不是此行,而是存储它的位置。是否将此值传递到集合中?使用保存在ViewState
中的列表
public List<int> Selected
{
set { ViewState["_selected"] = value; }
get
{
if(ViewState["_selected"] == null)
return new List<int>();
return (List<int>)ViewState["_selected"];
}
}
已选择公共列表
{
设置{ViewState[“_selected”]=value;}
得到
{
如果(视图状态[“_selected”]==null)
返回新列表();
返回(列表)视图状态[“_selected”];
}
}
使用保存在视图状态中的列表
public List<int> Selected
{
set { ViewState["_selected"] = value; }
get
{
if(ViewState["_selected"] == null)
return new List<int>();
return (List<int>)ViewState["_selected"];
}
}
已选择公共列表
{
设置{ViewState[“_selected”]=value;}
得到
{
如果(视图状态[“_selected”]==null)
返回新列表();
返回(列表)视图状态[“_selected”];
}
}
您不应该在页面顶部创建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] ";
}
}
}
受保护的无效页\u Init(对象发送方,事件参数e)
{
如果(会话[“Cartses”]!=null)
{
foreach(在(列表)会话[“Cartses”]中的BasketClass BookID)
{
GridView1.DataSource=购物车;
GridView1.DataBind();
AccessDataSource1.SelectCommand=“从[tblBook]中选择[BookID]、[book\u title]”;
}
}
}
您的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");
}
protectedvoid gridview 1\u SelectedIndexChanged1(对象发送方,事件参数e)
{
列表购物车;
如果(会话[“Cartses”]!=null)
{
购物车=(列表)会话[“购物车”]
}
其他的
购物车=新列表();
添加(新的BasketClass(转换为32(GridView1.SelectedDataKey.Values[“BookID]”));
添加(“cartses”,cart);
响应重定向(“Basket.aspx”);
}
您不应该在页面顶部创建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] ";
}
}
}
受保护的无效页\u Init(对象发送方,事件参数e)
{
如果(会话[“Cartses”]!=null)
{
foreach(在(列表)会话[“Cartses”]中的BasketClass BookID)
{
GridView1.DataSource=购物车;
GridView1.DataBind();
AccessDataSource1.SelectCommand=“从[tblBook]中选择[BookID]、[book\u title]”;
}
}
}
您的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");
}
protectedvoid gridview 1\u SelectedIndexChanged1(对象发送方,事件参数e)
{
列表购物车;
如果(会话[“Cartses”]!=null)
{
购物车=(列表)会话[“购物车”]
}
其他的
购物车=新列表();
添加(新的BasketClass(转换为32(GridView1.SelectedDataKey.Values[“BookID]”));
添加(“cartses”,cart);
响应重定向(“Basket.aspx”);
}
这部分代码看起来不错。我们能再看一下您对所选产品的使用情况吗?如何存储购物车的内容?这部分代码看起来不错。我们能再看一下您对所选产品的使用情况吗?如何存储购物车的内容?我将值传递到列表中,然后存储在会话变量中。我将值传递到列表中,然后存储在会话变量中