PDA

View Full Version : سوال: اجرا نشدن تغییرات در هنگام کلیک دکمه



victoria
چهارشنبه 05 خرداد 1389, 12:21 عصر
سلام دوستان
در برنامه زیر باید با هر بار زدن دکمه به آرایه ام سه مقدار اضافه کرده،ولی این کار را نمیکند و عدد نشان داده شده همان سه باقی میماند.لطفا راهنماییم کنید.:گریه:
با تشکر.


public partial class _Default : System.Web.UI.Page
{ ArrayList arr = newArrayList();
protected void Page_Load(object sender, EventArgs e)
{

}
protected void Button1_Click(object sender, EventArgs e)
{
arr.Add("aida");
arr.Add("arash");
arr.Add("mom");
TextBox1.Text += arr[2].ToString();
TextBox1.Text += arr.Count.ToString();
}
}

mehdi.mousavi
چهارشنبه 05 خرداد 1389, 13:24 عصر
سلام دوستان در برنامه زیر باید با هر بار زدن دکمه به آرایه ام سه مقدار اضافه کرده،ولی این کار را نمیکند و عدد نشان داده شده همان سه باقی میماند.لطفا راهنماییم کنید.:گریه: با تشکر.

سلام.
این مساله کاملا طبیعی هستش چرا که ArrayList شما با هر بار Postback مجدد از نو ساخته میشه... شما باید متغیر arr را به نوعی در حین Postback ها به سرور حفظ کنید. برای اینکار میتونید از ViewState، Session، Cache و ... استفاده کنید.

به بیان دیگه:


private System.Collections.Generic.List<string> MyArrayList
{
get
{
System.Collections.Generic.List<string> list = ViewState["MyArrayList"] as System.Collections.Generic.List<string>;
if (list == null)
ViewState["MyArrayList"] = list = new System.Collections.Generic.List<string>();

return list;
}
}


حالا هر جا خواستید، میتونید به لیست مزبور بدین شکل Item اضافه کنید:


MyArrayList.Add("item1");
MyArrayList.Add("item2");


موفق باشید.

پاورقی: در انتخاب محل ذخیره سازی این اطلاعات دقت کنید. ViewState، Session، Cache و ... هر کدوم کاربرد خاص خودشون رو دارن. برای اطلاعات بیشتر در این مورد به MSDN رجوع کنید.