añadir elementos a un ArrayList cuando se hace clic en un botón en el gridview
Pregunta
Tengo que añadir la itemid de la lista de filas al hacer clic en 'Añadir al carro' botón en el gridview, yo era capaz de pasar esta ITEMID a un ArrayList.
Pero el problema es que cada vez que haga clic en el botón de la itemid anterior se sobrescribe con el nuevo elemento en lugar Quiero que el ArrayList se expanda.
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();
}
}
}
Solución
No hay que olvidar que el ArrayList no se almacena en algún lugar, hay que almacenarlo en la sesión del usuario y en cada devolución de datos causada por el botón de recuperarlo de la sesión y añadir el artículo hecho clic el usuario.
Editar:. He aquí una pequeña muestra de cómo se debe almacenar el ArrayList en la sesión y recuperarlo en cada devolución de datos
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);
}
}
Si todavía tiene alguna pregunta, hágamelo saber.
Otros consejos
Sólo tiene que almacenar esa ArrayList
en el ViewState
o Session
por lo que conservará sus valores entre las devoluciones de datos.