ورود

View Full Version : مشكل با user control



moein_sql
دوشنبه 11 مرداد 1389, 19:50 عصر
سلام

من با vs.net 2008 كار ميكنم

يه user control دارم كه يه متغير از جنس integer توي كلاسش تعريف كردم .

حالا اين كنترول رو توي يه صفحه ميزارم و متغيرو تنظيم ميكنم اما در هر postback و لود شدن دوباره user control اطلاعات ذخيره شده در متغيره از دست ميره. نميدونم چرا؟

اين طوري شو تا حالا نديده بودم. حالا چيكارش كنم؟

iman_ad
دوشنبه 11 مرداد 1389, 20:01 عصر
باید از viewstate استفاده کنی
سرچ کن integrated user control نمونش هست

Mostafa_Dindar
دوشنبه 11 مرداد 1389, 20:09 عصر
سلام

من با vs.net 2008 كار ميكنم

يه user control دارم كه يه متغير از جنس integer توي كلاسش تعريف كردم .

حالا اين كنترول رو توي يه صفحه ميزارم و متغيرو تنظيم ميكنم اما در هر postback و لود شدن دوباره user control اطلاعات ذخيره شده در متغيره از دست ميره. نميدونم چرا؟

اين طوري شو تا حالا نديده بودم. حالا چيكارش كنم؟


باید از viewstate استفاده کنی
سرچ کن integrated user control نمونش هست

ViewState به خودی خود تنها مسول حفظ حالات کنترلها در بین پست بکها هست . اگر شما اون متغیر رو به کنترلی در روی Usercontrol ست نکرده باشد , طبیعی هست که از بین برود .

در صورتی که میخواهید اون مقدار اون از بین نرود باید با یکی از روشهای State management اون رو ذخیره کنی .

انتخاب گزینه مناسب , نیازمند درک صحیح از مورد کاربرد شما هست . ولی در صورتی که صفحه تنها به خودش پست بک میشود میتونید اون متغیر رو در Collection شی ViewState ذخیره کنید , یعنی ( بهتره که در رویداد لود این کار انجام شود ) :

ViewState["myVariable"] = 10;

تنها نکته ای رو که اینجا باید رعایت کنید , هنگام بازیابی باید Cast صورت گیرد .

موفق باشی

moein_sql
سه شنبه 12 مرداد 1389, 00:58 صبح
تشكر از راهنماهي هاتون. اما بحث viewstate نيست. اينجا من يك متغير عضو كلاس دارم كه مقدار دهي ميشه اما پس از postback مقدار شو از دست ميده. با debug بارها اونو trace كردم اما نميدونم چرا بدون دليل در postback مقدارشو از دست ميده.

moein_sql
سه شنبه 12 مرداد 1389, 01:16 صبح
من مشكلو يه طور ديگه بگم.

من يه صفحه دارم كه توي كدش يه همچين چيزي هست:




public class page1
{
string x;

button1()
{x="moein_sql"}

button2()
{
label1.text=x;
}

}


وقتي دكمه اول كليك ميشه مقدار x به رشته moein_sql عوض ميشه. وقتي دكمه دوم كليك ميشه قانونا بايد رشته moein_sql در برچسب نمايش داده بشه. اما مقدار null نصيب من ميشه.

اينكه من نميدونم رشته moein_sql توي postback كجا ميره؟

Mostafa_Dindar
سه شنبه 12 مرداد 1389, 09:18 صبح
تشكر از راهنماهي هاتون. اما بحث viewstate نيست. اينجا من يك متغير عضو كلاس دارم كه مقدار دهي ميشه اما پس از postback مقدار شو از دست ميده. با debug بارها اونو trace كردم اما نميدونم چرا بدون دليل در postback مقدارشو از دست ميده.

پست 3 من رو دوباره بخون ! مشکل شما عدم آشنایی با State management ها هست .

این 2 تاپیک رو هم مطالعه بفرمائید :

http://www.barnamenevis.org/forum/showthread.php?t=188786

(http://www.barnamenevis.org/forum/showthread.php?t=188786&highlight=State+Management)http://www.barnamenevis.org/forum/showthread.php?t=188786


موفق باشی

moein_sql
سه شنبه 12 مرداد 1389, 09:18 صبح
چرا كسي به اين post جواب نميده

moein_sql
سه شنبه 12 مرداد 1389, 09:26 صبح
سلام . مرسي از توضيحاتت

يعني شما ميگين كه اين متغير هاي كلاس هم در ناپايداري صفحات در طي postback ها شركت كرده و مقادير خودشونو از دست ميدن؟

پس چرا وقتي من اين مقدارو در يك كلاس در پوشه app_code ميزارم و دوباره اونو ميخونم هستش ولي
توي كلاس هاي خود صفحه از بين ميره؟