בעוד שאלה שאני נתקל בה המון מתבקש פתרון למצב של החלפת תיבות גלילה דינאמית בלי שיצטרכו לרפרש את הדף בכל פעם שרוצים להעלות תיבה חדשה עם נתונים חדשים לפי מה שנלחץ בתיבה הישנה.
יש מספר שיטות לעשות את זה, האחת בצד קליינט מלא, בה מביאים את כל הנתונים מראש אל הקליינט מכניסים אותם למערכים ומשתמשים במערכים הללו בכדי למלא תיבות גלילה קיימות על הדף. יש יתרונות וחסרונות לשיטה הזאת. היתרון הראשון זה שזה מהיר ואינו דורש גישה חוזרת לשרת, החיסרון הנו שהדף שמועלה לקליינט יכול להיות מאד כבד אם יש הרבה נתונים בכל אחד מהמערכים.
שיטה נוספת היא שיטה שמחלקת את העומס בין הקליינט לסרוור, בשיטה הזאת בפעם הראשונה שתתבקש תיבת גלילה חדשה, נלך לשרת ונביא את הנתונים, ואז נכניס אותם למערך. ברגע שתתבקש אותה תיבה מחדש נביא אותה מתוך המערך שכבר קיים אצל הקליינט. שיטה זו לדעתי היא השיטה הטובה ביותר ובעתיד גם אכתוב מאמר כיצד לבצע אותה.
השיטה היא שיטת הקליינט סרוור, בכל פעם שתתבקש תיבת גלילה חדשה, נלך לסרוור ונביא אותה. החסרון בה לעומת השיטה הקודמת היא הגישות החוזרות ונשנות אל הסרוור, היתרון בה הוא שאם אנחנו עובדים מול דאטה בייס דינאמי שכל הזמן משתנים בו נתונים, בכל גישה לסרוור נביא את הנתונים הכי חדשים.
הדוגמא שאני נותן היום משתמשת בשיטה האחרונה. אני אשתמש ב IFRAME חבוי בכדי להביא את הנתונים וב JS כדי להציג אותם על הדף, כמובן שכמו בכל דבר טוב השיטה הזאת תעבוד רק באקספלורר 4 ומעלה.
חיבור לבסיס הנתונים בכדי להביא את הקומבו הראשון שיישאר קבוע בדף
כדי לבצע את הבאת הקומבו בצורה הכי מהירה שאפשר אשתמש בתכונה getString של ADO כאשר את ההפרדות בין הטורים והעמודות אבצע ע"י פרמטרים של תיבת גלילה. dim strMiddleDelimiter,strEndDelimiter,strResult,strResult1
strMiddleDelimiter = ">"
strEndDelimiter = "IFAME חבוי גובה 0 רוחב 0 יסיים את הדף הראשון.
לחיצה על ערך בתיבת הגלילה תקרא לדף ASP בתוך ה IFRAME חלקו הראשון יהיה ממש כמו הדף הקודם רק שמשפט ה SQL ישתמש בפרמטר שהועבר אליו מתוך ה QUERYSTRING של הקריאה לדף
את התיבה שתווצר מתוך ה getString נשתול בתוך DIV בשם theSelect. פקודת ה onChange של התיבה תקרא לדף באותו IFRAM, ההבדל בינה לבין הפקודה בדף הראשון הנו שמספר הרמה שבה אנו נמצאים תהיה דינאמית, ותווצר ע"י הוספת 1 לנתון שהגיע אלינו מתוך הפרמטר level.
בסוף הדף נבצע פונקציית JS שתפקידה יהיה להעלות את התיבה שנוצרה בתוך theSelect אל ה DIV הנכון בדף העליון.