PDA

View Full Version : آیا میشه از یک صفحه Buttonی از صفحه دیگه رو فعال یا غیر فعال کرد؟



Milad_ATM
یک شنبه 06 تیر 1389, 11:15 صبح
بطور مثال : در صفحه amuzesh.aspx میخوام با کلیک بر روی btn5 ،یک Button دیگه که نامش هست btn25 در صفحه Portal.aspx غیر فعال بشه!؟
تشکر:چشمک:

Vahid_moghaddam
یک شنبه 06 تیر 1389, 11:17 صبح
بطور مثال : در صفحه amuzesh.aspx میخوام با کلیک بر روی btn5 ،یک Button دیگه که نامش هست btn25 در صفحه Portal.aspx غیر فعال بشه!؟
تشکر:چشمک:
این دو صفحه همزمان توی مرورگر باز هستند؟

Milad_ATM
یک شنبه 06 تیر 1389, 11:20 صبح
این دو صفحه همزمان توی مرورگر باز هستند؟

خیر،میخوام وقتی روی دکمه اول کلیک میشه کاربران رو تو صفحه دیگه از عملیات روی اون Button منع کنم.(Disable کردن Button دوم
مرسی)

Vahid_moghaddam
یک شنبه 06 تیر 1389, 11:25 صبح
شما می تونید از cache (اگه قراره disable کردن برای تمام کاربران باشه) و یا از session (اگه فقط این شرط باید برای یه کاربر برقرار باشه) استفاده کنید.
به صفحه ای که باز شده از سمت سرور دسترسی ندارید و شاید بشه با کد نویسی سمت کلاینت، صفحه ای رو که توی یه tab دیگه بازه، تغییر داد (من نمی دونم). اما با تعریف یه مقدار در cache یا session می تونید چک کنید زمانی که درخواست برای صفحه میاد آیا باید button فعال باشه یا نه. برای صفحه ای هم که در حال حاضر باز هست، می تونید در رویداد Click دکمه مقدار session یا cache رو چک کنید.

Milad_ATM
یک شنبه 06 تیر 1389, 11:34 صبح
مرسی.
ولی sesson نمی تونه کارمو انجام بده،چون اگه بخوایم session رو مقدار بدیم ودر Page load اون صفحه در صورت مقدار داشتن session بخوایم Button مربوطه رو غیر فعال کنیم در صورت بسته شدن صفحه هم session پاک میشه!!
(بحث سرور کلاینت هم ندارم،این یک پروژه ساده دانشگاهی هست.)

فقط میخوام از صفحه آموزش دکمه انتخاب واحد در صفحه دانشجویان غیر فعال بشه و در صورت کلیک مجددفعال...
تشکر مجدد

Vahid_moghaddam
یک شنبه 06 تیر 1389, 11:42 صبح
از Cache استفاده کنید. ( و چون امکان expire شدن cache وجود داره از ترکیب cache و database)

//Add to Cahce
.
.
.
Cache.Insert("key", true);
//insert the value of key into DataBase, true
.
.
//Remove from Cache
Cache.Remove("key");
//insert the value of key into DataBase, false

//Check
bool key;
if (Chache["key"]!=null)
{
key=(bool) Cache["key"];
}
else
{
key=ReadFromDataBase;
Cache.insert("key",key);
}

Milad_ATM
یک شنبه 06 تیر 1389, 12:13 عصر
از Cache استفاده کنید. ( و چون امکان expire شدن cache وجود داره از ترکیب cache و database)

//Add to Cahce
.
.
.
Cache.Insert("key", true);
//insert the value of key into DataBase, true
.
.
//Remove from Cache
Cache.Remove("key");
//insert the value of key into DataBase, false

//Check
bool key;
if (Chache["key"]!=null)
{
key=(bool) Cache["key"];
}
else
{
key=ReadFromDataBase;
Cache.insert("key",key);
}


مرسی.میشه یه خورده ریزتر توضیح بدید،آخه من آماتورم!

Vahid_moghaddam
یک شنبه 06 تیر 1389, 13:16 عصر
از cache برای نگهداری مقادیری استفاده می شه که در سطح application هست. یعنی مقداری که در cache نگهداری می شه برای تمام کاربرها یکسانه. وقتی شما در صفحه آموزش انتخاب واحد رو disable می کنید، یه مقدار false در DataBase توی یه جدول مثلا تنظیمات ذخیره کنید. و زمانی که انتخاب واحد مجازه، یه مقدار true ذخیره کنید. وقتی درخواست برای صفحه دانشجویان فرستاده می شه، این مقدار رو بخونید. اگر false بود، دکمه انتخاب واحد رو disable کنید. البته فقط به disable بودن دکمه انتخاب واحد اطمینان نکنید و حتما در رویداد onClick این دکمه چک کنید مقدار مربوط به مجاز بودن انتخاب واحد false هست یا true. تا اینجا شما با ذخیره یه مقدار در DB و خوندن اون مقدار اجازه انتخاب واحد رو به دانشجو می دید یا ازش می گیرید.

اما در مورد استفاده از Cache:
یکی از راه های بهینه سازی در یک وب سایت اینه که اتصال ها و تراکنش ها با دیتابیس کاهش پیدا کنه. در مثال شما ممکنه همزمان n دانشجو برای صفحه دانشجویان درخواست بفرستند که این یعنی n تراکنش با دیتابیس. برای کاهش این تراکنش ها، مقدار مربوط به مجاز بودن انتخاب واحد رو cache می کنیم (شبیه به کدی که نوشتم) حالا در هر درخواست، این مقدار به جای اینکه از دیتابیس خونده بشه از حافظه سرور خونده می شه و بسیار سریع تره. مشکلی که در استفاده از cache بوجود میاد اینه که به خاطر ذخیره مقادیر cache در حافظه، ممکنه cache از بین بره. در واقع ممکنه این حافظه اشغال شده آزاد بشه. به همین دلیل قبل از استفاده از cache باید مطمئن بشیم که مقدار مورد نظر ما در cache وجود داره. اگه این مقدار وجود داشت، اون رو می خونیم و در صورت false بودن دکمه رو disable می کنیم. اما اگه این مقدار وجود نداشت، اون رو از دیتابیس می خونیم و برای استفاده های بعدی دوباره در cache ذخیره می کنیم.

aminghaderi
یک شنبه 06 تیر 1389, 17:20 عصر
به نظر من از دیتابیس استفاده کنید ؟!
چون می تونی برای هر کاربر تصمیم جدا کانه ای بگیرید؟!
منظورم Visible و UnVisible باتن ها نیست؟! مثلا نمایش یه پیغام خاصی برای هر کاربر و ....
با این روش قابل انجامه؟!
امتحان نکردم ، ولی اگه در Session قابلیت Destroy کردن متغیر ها هم فراهم باشه ، این بار بهترین روش برای کار شما استفاده از Session می شه؟! (البته این نظر منه؟!)
در صفحه اول متغیر می سازید و مقدار رو در صفحه بعد می گیرید و بعد متغیر از بین می برید؟!
در حجم بالای کاربران ، حافظه سرور هم بهینه خواهد بود.
البته اگه همچین خاصیتی باشه...!
موفق باشید.

Vahid_moghaddam
یک شنبه 06 تیر 1389, 17:30 عصر
به نظر من از دیتابیس استفاده کنید ؟!
چون می تونی برای هر کاربر تصمیم جدا کانه ای بگیرید؟!
منظورم Visible و UnVisible باتن ها نیست؟! مثلا نمایش یه پیغام خاصی برای هر کاربر و ....
با این روش قابل انجامه؟!
امتحان نکردم ، ولی اگه در Session قابلیت Destroy کردن متغیر ها هم فراهم باشه ، این بار بهترین روش برای کار شما استفاده از Session می شه؟! (البته این نظر منه؟!)
در صفحه اول متغیر می سازید و مقدار رو در صفحه بعد می گیرید و بعد متغیر از بین می برید؟!
در حجم بالای کاربران ، حافظه سرور هم بهینه خواهد بود.
البته اگه همچین خاصیتی باشه...!
موفق باشید.

session برای یک کاربره. شما یک متغیر سرتاسری رو نمی تونید با session پیاده سازی کنید

aminghaderi
یک شنبه 06 تیر 1389, 18:23 عصر
session برای یک کاربره. شما یک متغیر سرتاسری رو نمی تونید با session پیاده سازی کنید
من نگفتم که متغیر Public تهیه کنیم؟!
گفتم در صورتی که سشن قابلیت حذف از حافظه رو داشته باشه ، میشه در صفحه اول (پس از برسی Permission کاربر ) که حالا یا True هست یا False مقدار رو در یه متغیر در Session قرار داد و در صفحه بعد چون هر متغیر برای یک نفر هست ، مقدار متغیر رو واکشی کرد و طی شرطی خاصیت Visible رو True یا False کرد.
و بعد هم متغیر رو Destroy کنه تا حافظه اشغال شده آزاد شه؟! (که در یوزر بالا اهمیت پیدا می کنه)
موفق باشید.

Milad_ATM
دوشنبه 07 تیر 1389, 18:30 عصر
با توجه به لطف شما(Vahid_moghaddam) فقط کلیک بر روی تشکر کم بود،
صمیمانه متشکرم!