当我点击gridview中的“添加到购物车”按钮时,我需要从行列表中添加itemid,我能够将此itemid传递给arraylist。
但问题是,每次我点击按钮时,前一个itemid都会被新项目覆盖,而我希望扩展列表扩展。
public partial class Drama_k : System.Web.UI.Page
{
string Cn=@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\ewap_k.mdf;Integrated Security=True;User Instance=True";
ArrayList arrValues = new ArrayList(4);
protected void GridView2_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName=="AddToCart")
{
int index = Convert.ToInt32(e.CommandArgument);
Session["item"] = GridView2.DataKeys[index].Value.ToString();
arrValues.Add(Session["item"]);
GridView1.DataSource = arrValues;
GridView1.DataBind();
}
}
}
答案 0 :(得分:1)
不要忘记arraylist没有存储在某个地方,你必须将它存储在用户的会话中,并且每次回发都会导致按钮从会话中检索它并添加用户点击的项目。
编辑:这里有一些关于如何在会话中存储ArrayList并在每次回发中检索它的示例。
public partial class _Default : System.Web.UI.Page
{
ArrayList array;
protected void Page_Load(object sender, EventArgs e)
{
if(Session["array"] == null)
{
array = new ArrayList();
Session.Add("array", array);
}
else
array = Session["array"] as ArrayList;
GridView1.DataSource = array;
GridView1.DataBind(); //Edit 2
}
protected void Button1_Click(object sender, EventArgs e)
{
array.Add(DateTime.Now);
}
}
如果您仍有疑问,请告诉我。
答案 1 :(得分:1)
您只需将ArrayList
存储在ViewState
或Session
中,以便在回发之间保留其值。