GetPostBackClientHyperlink

האזרחק

New member
GetPostBackClientHyperlink

אני משתמש בפונקציה הנ"ל אשר שייכת ל Page בכדי לקבל את ה PB SCRIPT של אובייקט בתוך ה Page. כל עוד הפקד שלי נמצא על הדף עצמו אין שום בעיה לגשת ל this.Page כדי לקבל את Page ולהפעיל את הפונקציה, הבעיה שלי היא בפקד מורכב יותר: יש לי פקד X שיושב בתוך collection מסוג xcollection כאשר xcollection נמצא בתוך פקד . אם אני שם Y על הדף this.Page הוא לא מוגדר ואני לא מוצא דרך להגיע ל Page כדי ליצור את הסקריפט הדרוש. איך אפשר להגיע ל Page מתוך פקדים פנימיים שנמצאים בתוך פקדים אחרים?
 

Justin Angel

New member
קה פרובלמה מואי צ'יקיטה?

הבעיה היא לא בדינמיות של הפקדים או בזה שהם מקוננים, הם ברצף האירועים שלך. בסופו של דבר, כל פקד שמתרנדר יהיה מוגדר על הדף. הבעיה היא מתי הקישור בפועל בין הפקד לבין הדף מתבצע. המאפיין this.Page רק מבצע חיפוש\השמה רקורסיבית מתוך ההורה. כלומר, חובה עלינו לבדוק שההורה שלנו מקושר לדף עצמו בהקדם האפשרי. הבעיה כאן היא שיש לך קוד שנראה ככה:
MyControl Y = new MyControl(); Y.ID = "foo"; Y.XCollection = new XCollection(); Y.XCollection.Add(new X()); this.Controls.Add(Y);​
השתי שורות המעניינות היא שבקוד שלך אתה כנראה מבצע פעולות בין יצירת הפקד לבין קישורו לדף. הקישור לדף צריך להיות הדבר הראשון שקורה לפקד אחרי יצירתו ואם זה לא אפשרי (למשל כי בתוך הקונסטרקטור הוא מאתחל משהו שדורש את Page) אז להוסיף את Page אפילו לתוך הקונסטרקטור.
MyControl Y = new MyControl(); this.Controls.Add(Y); Y.ID = "foo"; Y.XCollection = new XCollection(); Y.XCollection.Add(new X());​
או אפילו כמו שאמרנו, למרות שמומלץ להימנע מהשיטה הזו אם אפשר:
MyControl Y = new MyControl(this); Y.ID = "foo"; Y.XCollection = new XCollection(); Y.XCollection.Add(new X()); // myControl ctor public myControl(Page PageToAddControlToo) { PageToAddControlToo.Controls.Add(this); Page.DoSomethingWithPage(); }​
רק צריך לתאם את רצף האירועים ככה שההוספה להיררכיה של הדף תתבצע לכל המעורבים החל מההורים וכלה בילדים מתבצעת בהקדם האפשרי.
 
למעלה