добавление элементов в список массивов при нажатии кнопки в GridView
Вопрос
Мне нужно добавить идентификатор элемента из списка строк, когда я нажимаю кнопку «Добавить в корзину» в представлении сетки. Мне удалось передать этот идентификатор элемента в список массивов.
Но проблема в том, что каждый раз, когда я нажимаю кнопку, предыдущий идентификатор элемента заменяется новым элементом, вместо этого я хочу, чтобы список массивов расширялся.
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 в сеансе и получать его при каждой обратной передаче.
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);
}
}
если у вас все еще есть вопросы, дайте мне знать.
Другие советы
Вам просто нужно это сохранить ArrayList
в ViewState
или Session
поэтому он сохранит свои значения между обратными передачами.