PDA

View Full Version : استفاده از sessionبرای حفظ وضعیت لیست باکس



c#_web
یک شنبه 12 شهریور 1385, 11:01 صبح
با سلام. من هنوز مشکلم با session حل نشده است. لطفاً مرا راهنمایی کنید.
من در برنامه ام یک لیست باکس چند انتخابی دارم. که کاربر میتواند چند آیتم از آنرا انتخاب کند . هنگامی که از این صفحه رفته و دوباره برمیگردم میخواهم انتخابهای لیست باکس کماکان محفوظ باشد.
از روش زیر میروم ولی اشکال دارد چه کنم ؟ لطفاً راهنمایی ام کنید.

foreach (ListItem item_sel in list_subject.Items)
{
if(item_sel.Selected)
{
arr_select_subject.Add)item_sel.Text);
}
}
در کد بالا ، اندیس عناصر انتخابی را ذخیره کردم.

int m;
for(m=0;m<save_contact2.arr_select_subject.Count;m++)
{
Session["list_subject"+m] = list_subject.Items[m].Selected; }
در کد بالا برای هر انتخاب یک session ایجاد کردم.و مقداردهی کردم.

در page_load:


for(n=0;n<save_contact2.arr_select_subject.Count;n++)
{
if ((!Page.IsPostBack) && (Session["list_subject"+n] !=null))
{
list_subject.Items[n].Selected= (bool)Session["list_subject"+n];
Session["list_subject"+n] =null;
}
}
اما در اجرای برنامه خطا میدهد در مورد اینکه اندیس انتخابی باید در داخل حوزه اندیسهای لیست باشد.
لطفاً مرا راهنمایی کنید چگونه میتوانم یک لیستی که چند انتخابی است را حفظ وضعیت کنم ؟
خواهشمندم مرا راهنمایی کنید؟؟!!؟؟!!؟؟!!
ممنون.

Behrouz_Rad
یک شنبه 12 شهریور 1385, 11:39 صبح
انصافا خودت میتونی کدها رو بخونی؟ چشمام در اومد!

----------------------------
اندیس آیتم های انتخاب شده رو در یک متغیر رشته ای بریز، این مقادیر باید با کاراکتر "," از هم جدا شده باشند.
در هنگام قرار گرفتن آخرین آیتم در متغیر رشته ای، یک کاراکتر "," اضافه هم در انتهای محتوای متغیر قرار می گیره که می تونی به شکل زیر این کاراکتر اضافه رو حذف کنی:


myIndexes = myIndexes.Substring(0, myIndexes.LastIndexOf(","))

این متغیر رو در یک Session قرار بده.
حال در روال Page_Load، ابتدا وجود Session رو چک کن و سپس با تبدیل مقدار قرار گرفته در Session به String و انتساب اونها به یک متغیر رشته ای، با تعریف یک آرایه از نوع رشته ای، مقادیر رو با استفاده از متد Split بر مبنای کاراکتر "," جدا کن و در آرایه بریز:


Dim myArray As String() = myString.Split(",")

حال به سادگی با پیمایش آرایه با یک حلقه ی For، به مقصودت نایل میشی!

موفق باشید.

c#_web
چهارشنبه 15 شهریور 1385, 14:47 عصر
از کمک شما خیلی خیلی ممنونم.
با راهنمایی قدم به قدمتان مشکل من حل شد. خیلی متشکرم.
برای فونتهای بالا هم ببخشید چون حجم مطالب زیاد بود آنها را در word تایپ کرده و سپس paste کردم ولی گویا هنگام paste کردن یکسری مطالب اضافه کنارش درج کرده . لطفاً راهنمایی کنید کدها را چگونه بنویسم که مثل شما در یک کادر باشد.
ممنون.