我需要从行的列表中添加的itemid当我点击“添加到购物车”按钮,在GridView中,我能够通过这为itemid一个数组列表。

但问题是,每次我按一下按钮前面的itemid将被替换为新的项目,而不是我想ArrayList的扩大。

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();
        }
    }
}
有帮助吗?

解决方案

不要忘记,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);
    }
}

如果您仍有疑问,让我知道。

其他提示

您只需要存储在ArrayListViewStateSession所以它会保留回发之间的数值。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top