חלוקה לעמודים ב-ASP
לפעמים כאשר אנו שולפים רשומות מבסיס נתונים, כמות הרשומות גדולה מידי מכדי להציגן בדף אחד. אם נציג 100 רשומות באותו דף, לגולש יהיה זמן לאכול ארוחת צהריים, לשתות קפה ולישון סיאסטה, לפני שהדף ייסיים לעלות.
הדוגמא הקלאסים למצב זה הוא פורום. לפעמים יש בפורום מאות ואלפי הודעות, והצגתן בדף אחד בלתי אפשרית, גם מבחינת זמן, וגם מבחינת נוחיות הגולש.
לכן נהוג להחליט על מספר רשומות סביר אשר יוצג בדף, ולחולל באופן אוטומטי תפריט ניווט כדי שניתן יהיה להגיע לדפים האחרים.
אז איך עושים את זה?
קודם כל, נגדיר את המשתנים שנצטרך, מעבר למשתנים הרגילים ישי לנו בדף (recordSet, Connection וכו').
|
|
- currPage יכיל את מספר הדף הנוכחי. אותו גם נקבל ב-Request במעבר בין הדפים.
- pCount יכיל את מספר הדפים הכולל שיש לנו
- numRecs יכיל את מספר הרשומות שנחליט להציג בכל דף. במקרה שלנו, זה יהיה 20.
- i ישמש אותנו כמונה בלולאות
קביעת מספר הרשומות בדף
כדי לקבוע כמה רשומות יוצגו בכל דף, אנו צריכים רק להכניס את המספר לתוך המשתנה numRecs.
numRecs = 20
משתנה זה ישמש אותנו לאורך כל הסקריפט, ואם יום אחד נחליט לשנות את מספר הרשומות שיוצגו בכל דף, נצטרך לשנות רק את השורה הזו.
איך מחליטים מהו הדף הנוכחי?
כאמור, המשתנה currPage אמור להכיל את מספר הדף הנוכחי. במקרה וזוהי הפעם הראשונה בה אנחנו נכנסים לדף, כלומר, עדיין לא השתמשנו בתפריט הניווט, אני רוצים להציג את הדף הראשון בסידרה. לכן נציב בתוכו 1.
currPage=1
לאחר מכן, נבדוק האם קיבלנו ב-Request מספר דף להצגה (כלומר, הגענו לדף בעקבות שימוש בתפריט הניווט). אם קיבלנו ערך כלשהו, נציב אותו בתוך currPage, אם לא, currPage ישאר 1.
|
|
פתיחת הרקורדסט
עכשיו נפתח את הרקורדסט
|
|
נקבע לרקורדסט את גודל הדפים (כמה רשומות יהיו בכל דף) ואת גודל ה-cache
|
|
עכשיו הרקורדסט "יודע" שהוא מחולק לדפים של 20 רשמות.
מעבר לדף הנוכחי
מכיוון שהקרורדסט "יודע" עכשיו את גודל הדף, הוא גם יכול לתת לנו את מספר הדפים הכללי, כלומר, מספר הרשומות שבו חלקי גודל הדף.
כמו כן, אנו יכולים להעביר אותו ישירות לדף שרצינו (currPage הנוכחי).
על מנת לעשות זאת, נעטוף את הפקודות בתנאי שיבדוק האם השאילתה שלנו החזירה בכלל רשומות, כדי להמנע משגיאה באם הרקורדסט ריק.
|
|
עכשיו pCount מחזיק לנו את מספר הדפים הכולל, והרקורדסט עצמו, עומד על הרשומה הראשונה שמספרה CurrPage.
הצגת הנתונים
עכשיו נותר לנו רק לעבור בלולאה על הרקורדסט, ולהציג כרצוננו את הנתונים.
הרשומה הראשונה ברקורדסט היא אמנם הרשומה הראשונה בדף הנוכחי, אך עדיין, מעבר בלולאה על rs.EOF תציג לנו לא רק את הרשומות בדף הנוכחי, אלא מהדף הנוכחי והלאה. כאן בא לעזרתינו המשתנה i.
אנו נוסיף ללולאה תנאי עצירה, שיסמן לה לעצור כאשר הגענו לסוף הרקורדסט, או כאשר עברנו את מכסת הרשומות בדף (20, במקרה שלנו). אל לנו לשכוח לקדם את i ב-1 בסיום כל איטרציה של הלולאה.
|
|
לולאה זו תציג לנו 20 רשומות, או, אם מדובר בדף האחרון, ויש בו פחות מ-20 רשומות, היא תציג לנו את כל הרשומות בדף.
בניית תפריט הניווט
כדי לאפשר למשתמש לעבור בין הדפים, אנו נבנה תפריט ניווט אשר יכיל קישורים לכל הדפים. תפריט זה ניתן לשכלול (הצגת מספרי העמודים בתיבת בחירה במקום כקישורים, הצגת רק 10 מספרים בכל פעם וכו').
נבנה לולאה שתרוץ מ-1 עד מספר הדפים, ותציג את המספר כקישור לאותו עמוד, ובכל פעם נשלח לו CurrPage שונה:
|
|
ניתן לשכלל זאת מעט, ולהציג את מספרו של הדף הנוכחי בצבע שונה, וללא קישור, כדי להקל על ההתמצאות. זאת נעשה ע"י תנאי המשווה את CurrPage ל-i הנוכחי:
|
|
וזהו תפריט הניווט שלנו.
הסקריפט בשלמותו
|
|
בהצלחה!
תגובות בפייסבוק