l'ajout d'éléments à un ArrayList quand un bouton dans gridview est cliqué
Question
Je dois ajouter la itemid de la liste des lignes lorsque je clique sur le bouton « ajouter au panier » dans le gridview, j'ai pu passer ce itemid à un arraylist.
Mais le problème est que chaque fois que je clique sur le bouton de la itemid précédente est remplacée par le nouvel élément à la place que je veux que le arraylist de se développer.
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();
}
}
}
La solution
ne pas oublier que le arraylist ne sont pas stockées quelque part, vous devez stocker dans la session de l'utilisateur et sur chaque postback causé par le bouton récupérer de la session et ajouter l'élément cliqué par l'utilisateur.
Modifier. Voici un petit échantillon de la façon dont vous devriez stocker ArrayList dans la session et le récupérer sur chaque 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);
}
}
si vous avez encore des questions me le faire savoir.
Autres conseils
Vous avez juste besoin de stocker que dans le ArrayList
ou ViewState
de sorte qu'il Session
conserver ses valeurs entre postbacks.