PDA

View Full Version : سوال: ساختن Session با شی DataTable



Mofid.m
پنج شنبه 18 دی 1393, 15:32 عصر
درود به همه دوستان
من تو پروژم باید اطلاعات خودمو به صورت رندم از دیتابیس بخونم و بریزم تو DataTable و بعد صفحه بندی کنم. 15 تا 15 تا
چون رندم باید نمایش بدم نمیشه هر دفعه که Page_Load رخ میده از دیتابیس بخونم پس یه شرط گذاشتم تا زمانی که کابر برای دفعه اول صفحه رو درخواست کرد از دیتابیس بخونه و بریزه تو DataTable.
اما زمانی که کاربر صفحه بعدی رو از قسمت Pager درخواست میکنه چون دوباره Page_Loadرخ داده پس ایندفعه من اطلاعات رو از دیتابیس نمی خونم و به همین علت DataTable خالیه و همچی خراب میشه.
من اومدم برای هر کاربری که صفحه رو درخواست کرد(کاربر میهمان) یه Sesstion ساختم و DataTable توش ذخیره کردم و مشکلم حل شده
اما نمیدونم این راهش هست یا نه؟
با زیاد شدن Sesstion سرور Down نمیشه؟
البته اینم بگم که برای Sesstionها Timeout 10minuts در نظر گرفتم.

aminmousavi
پنج شنبه 18 دی 1393, 15:52 عصر
سلام دوست عزیز . به نظر من که کار جالبی نیست !
شما هدفتون رو بگین که چرا اصلا رندم میخواید نشون بده و چه ایده ای پشت این کار هست ، اونجوری شاید به یک جواب بهتر برسیم .

Mofid.m
پنج شنبه 18 دی 1393, 16:20 عصر
سلام دوست عزیز . به نظر من که کار جالبی نیست !
شما هدفتون رو بگین که چرا اصلا رندم میخواید نشون بده و چه ایده ای پشت این کار هست ، اونجوری شاید به یک جواب بهتر برسیم .
این یک سری تصاویر تبلیغاتی هستش که هر کدومش لینکی دارن به صفحه مربوط به خودشون
این عکس ها رو میخوام در 5 ردیف سه تایی نشون بدم و برای اینکه یه سری عکس خاص بسته که زمان ذخیره سازی در دیتابیس تو صفحه اول نشون داده نشن قرار شد عکس ها رو رندم انتخاب کنم. ( که تا حالا خیلی وقتمو گرفته - کلی جستجو کردم دربارش ولی چیز خاصی دستگیرم نشد) البته نمی دونم شکل دیگه ایی هم هست واسه انجام این کار یا نه؟
اینم بگم که من قبلا برنامه ویندوزی مینوشتم و تجربه زیادی تو طراحی و راهکار های حل این مسائل ندارم.
ممنون میشم اگه کمکم کنید

aminmousavi
پنج شنبه 18 دی 1393, 16:55 عصر
خوب بنظر من این روشی که خودتون میخواستید پیاده سازی کنید زیاد خوب نیست ، چون بار زیادی رو سرورتون میزاره ، هم session زیاده اشغال میکنه و همچنین رندم کردن کل اطلاعات برای هر بازدیدکننده سرورتون رو زیادی مشغول میکنه . چند تا راه عنوان میکنم بینین کدومش براتون بهتره :

- از دیتا گرید های jquery استفاده کنید که خودشون page بندی میکنن ، تو این حالت صفحه عوض کردن Postback نمیخوره ( اما روش خیلی خوبی نیست ، مخصوصا اگر دیتا زیاد باشه ، تو این روش فقط session رو حذف کردید اما بجاش حجم دیتا زیادی رو به کلاینت باید نشون بدین توی pageload)

- میتونین توی جدول sql تون به تبلیغات یک فیلد اولیت اضافه کنین ، و مثلا هر 12 ساعت یکبار بیاین به همه رکورد ها اولیت رندم بدین ، بعد صفحه بندی سایتون مثل حالت عادی میشه ، و دیگه نیاز نیست کار خاصی انجام بدید کافیه کوئری که میگیرید رو نسبت به اولیت سورت کنید (SELECT * FROM Ads Order By Piortiy)

- مینونین جای رندم کردن رکورد ها ، صفحه هاتون رو رندم کنین ! یعنی اینکه ببینین چند تا رکورد دارین و بعد نسبت به تعداد آگهی که در صفحه نشون میدین تقسیم کنین تا کل صفحات بدست بیاد ، مثلا میشه 10 تا صفحه ، شما می یان 10 صفحه رو رندم میکنین ، برای اینکار میتونین از querystring یا session استفاده کنین ، مثلا همچین مقداری میریزین : pagernd=4;1;2;10;3;9;8;6;7 بعد نسبت به صفحه جاری که دارین اون صفحه رو لود میکنین . یعنی اگر صفحه یک بود مقادیر صفحه 4 رو نشون میدین و ...

فعلا همین ها به ذهنم رسید ، ببینید چطوره اگر مشکلتون حل نمیشه با اینها میشه باز هم فکر و صحبت کرد .

Mofid.m
پنج شنبه 18 دی 1393, 17:49 عصر
من فکر میکنم روش دوم شما روش خوبیه
باید روش کار کنم ببینم چی میشه
بازم اگه راهه دیگه ایی پیدا کردین خبرم کنین
با سپاس فراوان