l'aggiunta di elementi a un ArrayList quando un pulsante in GridView viene cliccato
Domanda
ho bisogno di aggiungere l'itemid dall'elenco delle righe quando clicco 'aggiungi al carrello' pulsante nella GridView, sono stato in grado di passare questa itemid a un ArrayList.
Ma il problema è che ogni volta che si fa clic sul pulsante itemid precedente viene sovrascritto con il nuovo elemento invece voglio che l'ArrayList di espandersi.
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();
}
}
}
Soluzione
non dimenticate che l'ArrayList non è memorizzato da qualche parte, bisogna conservarlo in sessione dell'utente e su ogni postback causata dalla tasto recuperarlo dalla sessione e aggiungere l'elemento cliccato dall'utente.
Modifica:. Ecco un piccolo esempio di come si dovrebbe conservare l'ArrayList nella sessione e recuperare su ogni 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);
}
}
se avete domande fatemi sapere.
Altri suggerimenti
Hai solo bisogno di memorizzare che ArrayList
nel ViewState
o Session
così manterrà i suoi valori tra i postback.