0

当我单击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();
        }
    }
}
4

2 回答 2

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);
    }
}

如果您还有问题,请告诉我。

于 2009-05-14T19:31:50.470 回答
1

您只需将其存储ArrayListViewStateor中Session,它将在回发之间保留其值。

于 2009-05-14T19:32:53.713 回答