Hinzufügen von Elementen zu einer Arraylist, wenn eine Schaltfläche in gridview angeklickt wird
Frage
Ich brauche die itemid aus der Liste der Zeilen hinzufügen, wenn ich Button in der gridview auf ‚in dem Warenkorb‘, ich war in der Lage, dies zu einem Arraylist passieren itemid.
Aber das Problem ist, dass jedes Mal wenn ich auf die Schaltfläche klicken die vorherige itemid mit dem neuen Elemente überschrieben wird stattdessen mag ich die Arraylist erweitern.
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();
}
}
}
Lösung
nicht vergessen, dass die Arraylist nicht irgendwo gespeichert ist, haben Sie es in der Sitzung des Benutzers zu speichern und auf jedem von der Taste verursacht Postbacks es aus der Sitzung abrufen und das Element durch den Benutzer angeklickt hinzuzufügen.
Edit:. Hier ist ein kleines Beispiel, wie Sie die Arraylist in der Sitzung speichern soll und rufen Sie sie auf jedem Postback
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);
}
}
Wenn Sie noch Fragen haben lassen Sie mich wissen.
Andere Tipps
Sie müssen nur diese ArrayList
im ViewState
oder Session
speichern, damit es seine Werte zwischen Postbacks beibehalten werden.