PDA

View Full Version : چندصفحه ی شدن خود کار



sunboy
دوشنبه 30 تیر 1382, 18:05 عصر
اقا سلام
دوستان به نظر شما مثلا همین فروم دید که اگه یه تاپیکی تعدادپستهاش بیشتر از یه حد به شه خود به خود یه صفحه بهش اضافه می شه از چه تکنیکی استفاده شده
:oops:

Abbas Arizi
سه شنبه 31 تیر 1382, 12:20 عصر
شما با رکوردستها که حتما آشنایی دارید. یک رکوردست مجموعه ای از رکوردهای داخل حافظه است. خب شما میتونید این رکوردست رو صفحه بندی کنید. یعنی بگید مثلا هر 10 تا رکورد یک صفحه باشه. اگر با استفاده از ADO یک رکوردست رو باز کنید شیی Recordset در ADO دارای یک خصوصیت به اسم PageSize هست. شما با مقدار دهی این خصوصیت تعیین میکنید که چند رکورد در هر صفحه باشد. بعد برای حرکت بین این صفحه ها میتونید از ویژگی AbsolutePage استفاده کنید. ویژگی PageCount هم تعداد صفحات را مشخص میکند.
خب حالا اگر PageCount فرضا برابر 5 باشد، شما باید 5 صفحه برای نمایش سطرها ایجاد کنی. رفتن به صفحه بعدی یا قبلی رو هم از طریق مقداردهی AbsolutePage انجام میدی. (البته این به معنی این نیست که واقعا 5 صفحه ایجاد میکنی. میشه این جور تعریف کرد که هر بار که کاربر فرضا Next را کلیک کرد صفحه دوباره نمایش داده بشه و اطلاعات رو بر مبنای صفحه فعلی نمایش بده.)
البته من چون خودم تجربه عملی در این زمینه ندارم شاید توضیحاتم خیلی کامل نباشه. اساتیدی مثل آقای نصیری و ... بهتر میتونن کمک کنند.

Vahid_Nasiri
سه شنبه 31 تیر 1382, 13:20 عصر
خواهش می کنم! جواب شما یک راه حل است که جالب است.

عموما برای اینکار در ASP معمولی و PHP می آیند یک حلقه درست می کنند و سپس برای مثال تعداد آیتم های یک صفحه را 10 در نظر می گیرند. حالا با این حلقه تک تک رکوردها ی مربوط به یک تاپیک را می خوانند و نمایش می دهند. هر جایی که شمارشگر حلقه قابل تقسیم بر 10 بود یعنی یک صفحه تمام شده و صفحه ی بعد را شروع می کنند. گذاشتن لینک هم بالا یا پایین صفحه برای این مورد یعنی ارجاع به صفحه ی بعد هم در پایان هر 10 شمارش انجام می شود.

در ASP.NET این معضل توسط عمو بیلی حل شده است! شما به صورت ویژوال تعیین می کنید که یک گرید مانند اینجا چند row داشته باشد. در هنگام نمایش خود گرید بسیار توانمند ASP.NET کار Paging را خودکار انجام می دهد و برنامه نویس در گیر این جزئیات که باید یکبار برای همیشه حل شوند نمی شود.