
IsPostBack מחזיר false בגלישה הראשונה ו-true בכל גלישה אחרי זה. לכן קוד שצריך להתבצע רק בטעינה הראשונה נכתב בתוך if (!IsPostBack). בדוגמה של שעה שמוצגת על המסך, השעה מופיעה רק בטעינה הראשונה.runat="server", בלי קובץ נפרד. זה נוח לדוגמאות קצרות. לקוד רציני ממליצים על קובץ C# נפרד.הטקסט המלא של הדקות הראשונות בהרצאה «Page Events - אורך חיי דף וארועי הדף» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
הדבר הבא שאנחנו הולכים לראות ב-sp.net זה אירועי דף. בואו נפתח פרויקט חדש ונצרף דף חדש לפרויקט. נקרא לדף הזה Homepage ונסתכל מה יש לנו ב-Solution Explorer.
אז אנחנו ראינו כבר שקיימים בעצם שני קבצים. קובץ אחד הוא קובץ ASPX וזה תבנית ה-HTML שקיימת בדף. תבנית הזאת מכילה גם קוד HTML טהור וגם רכיבי ASP.NET שניתנים לשינוי מצד השרת.
בנוסף קיים לי קובץ C-Sharp שמאפשר לגשת לרכיבי צד השרת ולעדכן אותם. אבל בואו טיפה נסתכל מה יש בקובץ ה-C-Sharp. אז ראשית כל דף ב-ASP.NET מנוהל על ידי מחלקה נפרדת.
למחלקה יש שם, בדרך כלל זה שם הדף אבל זה לא חייב להיות, המחלקה יורשת מהמחלקה פייג' כי גם אנחנו דף. גם המחלקה שלנו מייצגת דף. למחלקה הזאת יש מספר אירועים.
בכל פעם שמתבצעת ריצה לשרת ולקוח מבקש את הדף הזה, וזה לא משנה אם זו פעם ראשונה שהלקוח גלש לדף או פעם שנייה, או שהוא לחץ על לחצן ובעקבות הלחצן מתבצעת ריצה לשרת לדף הזה, או שהוא בחר איזה פריט בתיבת גלילה, ומתבצעת ריצה לשרת בכל פעם שמתבצעת ריצה לשרת נוצר אובייקט ממחלקת הדף
וכל אירועי הדף מתבצעים אלא אם כן הגדרנו טריק מבחינת ייעול שאנחנו נראה בהמשך ואנחנו הולכים לראות עכשיו אילו אירועים מתבצעים אז דבר ראשון by default אנחנו רואים שקיים אירוע שנקרא page load האירוע הזה מתבצע כאשר ישנה הריצה לשרת לקבלת הדף, אבל למעשה קיימים עוד אירועים אחרים ברמת הדף.
בואו נסתכל אילו אירועים קיימים. ישנו מאמר במערכת העזרה של מיקרוסופט שנקרא ASP.NET Page Life Cycle Overview. מאמר הזה במערכת העזרה של מיקרוסופט, מערכת העזרה נקראת MSDN, מכיל הסבר לגבי אילו אירועים מתבצעים ברמת הדף.
כאן אנחנו רואים טבלה שמגדירה לנו כל אחד מהאירועים שמתבצעים ברמת הדף ולמה מיועד האירוע הזה. ואנחנו הולכים במהירות לעבור על האירועים ולראות אילו אירועים באמת קיימים.
אירוע ראשון, pre-init. אנחנו רואים שהאירוע הזה מכיל קוד שנכתב עבור דברים שנקראים theme או ערכות נושא. אנחנו בהמשך נגיע אליהם.
לאחר מכן מגיע אירוע init ואז init-complete. preload, Load זה האירוע שאנחנו רואים ב-Default, כמובן אצלנו הוא נקרא Page-Underline-Load, בטבלה הזאת הוא נקרא Load.
לאחר מכן אנחנו רואים שיש משהו שנקרא Control Events. Control Events זה לא אירוע ברמת הדף, אלא כל האירועים ששייכים לרכיבים שנמצאים על הדף, שצריכים גם כן להתבצע.
לדוגמה, בנוסף קיים לי גם איזשהו לחצן, בואו נגדיר SP.2 Button ואני הולך ולוחץ על הלחצן דאבל קליק.
אז אני רואה שיש לי כאן עכשיו שני אירועים. אירוע אחד נקרא Page Load שאני יכול לתכנת בו קוד, ואירוע אחר נקרא Button 1 Click, זה האירוע של הלחצן.
הטבלה הזאתי שראינו כרגע מסדרת את האירועים לפי סדר הביצוע שלהם. אני רואה ש-Load מתבצע לפני Control Events, לכן לואוד התבצע לפני האירוע קליק שנחשב כקונטרול איבנטס.
לאחר מכן אני רואה שיש לי לואוד קומפליט לאחר מכן פרי רנדר פרי רדן קומפליט סייב סטייט קומפליט אנחנו נדבר על סייב סטייט בהמשך יש לנו פה פעולה זה לא באמת איבנט אלא פעולה שמתבצעת שבה הדף מרנדר את עצמו לקוד html מה זה אומר מרנדר את עצמו אנחנו דיברנו על מונח הרנדרינג באחד השיעורים הקודמים ואומר שכל אחד מרכיבי הדף שהוא צד שרת הופך את עצמו
לרכיב html מתאים או למספר רכיבי html מתאימים. הפעילות הזאת מתבצעת כאן ולאחר מכן מתבצע אירוע unload ששייך לדף שמשחרר משאבים שהוגדרו בזיכרון.
כל האירועים האלה זה אירועים ברמת הדף חוץ מ-control events ששייכים לרכיבים עצמם שמתבצעים בכל פעם שאנחנו גולשים לדף. זאת אומרת שאם אני עכשיו כותב קוד באירוע Page Load לדוגמה response.write I'm in the Page Load ואותו דבר אני אכתוב בלחצן I'm in Button 1 Click בואו נריץ את הדף הזה.
ראשית אני רואה שכתוב לי פה למעלה I'm in the Page Load זה אומר שאירוע Page Load התבצע בואו נלחץ על הלחצן ונראה הפעם שיש לי גם I'm in the page load וגם I'm in the button אחד קליק.
כאשר לחצתי על הלחצן הזה שני האירועים התבצעו, זאת הסיבה שאני רואה את שניהם. בואו נוסיף עוד אירוע. נלך לטבלה וניקח את אחד האירועים היותר קדומים ל-page load.
בואו ניקח את אירוע pre init. בשביל לכתוב קוד באירוע pre init, נשכפל את כותרת אירוע page load ונקרא לו page pre init. בואו נראית שורה אחרי הדפסת כל אחד מהם.
נריץ שוב את האתר. ראשית אני רואה את pre init התבצע ואז pre load, page load. page pre init ואז page load.
בואו נלחץ על הלחצן ונראה עכשיו ששלושתם התבצעו.