إضافة عناصر إلى ArrayList عندما يتم النقر على زر في gridview
سؤال
وأنا بحاجة إلى إضافة itemid من القائمة الصفوف عندما أقوم بالنقر فوق "إضافة إلى السلة 'زر في gridview، وكنت قادرا على تمرير هذا itemid إلى arraylist.
ولكن المشكلة هي أن في كل مرة كنت اضغط على زر الكتابة فوق itemid السابق مع بند جديد بدلا أريد arraylist في التوسع.
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 لا يتم تخزين في مكان ما، لديك لتخزينه في جلسة عمل المستخدم وعلى كل إعادة النشر الناجمة عن زر استرجاعها من الدورة وإضافة العنصر نقر المستخدم عليها.
وتحرير: هنا هو عينة صغيرة من كيف ينبغي تخزين 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
لذلك سوف تحتفظ قيمها بين إعادات النشر.
لا تنتمي إلى StackOverflow