DCSIMG
Question from Tapuz .Net forum: ViewState or PostBack data isn't being loaded into my ASP.Net server-side controls - Justin myJustin = new Justin( Expriences.Current );

Question from Tapuz .Net forum: ViewState or PostBack data isn't being loaded into my ASP.Net server-side controls

שאלה:

הוספתי למסך כפתור, שמבצע פוסטבק,
במתודת ה Click של הכפתור (בשרת), אני ניגש ל SelectedValue של ה DropDownList בקונטרול,
אך תמיד אני מקבל את הערך הראשון ברשימה, ולא באמת את הערך שהגולש בחר.  מדוע ?

 

תשובה:

אי-טעינת מידע ViewState או PostBack נגרמת ב-99% מהמקרים ע"י דבר אחד: ה-ID של הפקד שאמור לקלוט את הערכים אינו קבוע ומשתנה בין PostBackים.
ViewState מספק בסופו של דבר זוגות של "מפתחות-ערכים" כאשר המפתח הוא ה-ID של הפקד והערך הוא הערך הנבחר הקודם שלו.
אחרי PostBack אנו מקבלים מרשימת Request.Form רשימת IDים של פקדים ואת הערכים החדשים שלהם שנבחרו.
הכל מבוסס על זה ש-ID הוא קבוע ולא ישתנה.
אם אחד מהשניים לא נטען, תביט על Request.Form אחרי PostBack ותראה את ה-ID של הפקד שהוא מנסה לשלוח לו ערכים. ה-ID הוא למעשה הרכבה של ההיררכיה המלאה של NamingContainers שבתוכו יושב הפקד. אחד מהאלמנטים שם יהיה עם שם כמו ctl001 וזה הפקד בעל השם הבלתי קבוע. הפתרון הוא לקבוע לכל הפקדים בהירככיה הזו ID קבוע ברמת הקוד.

 

קישור: http://www.tapuz.co.il/tapuzforum/main/Viewmsg.asp?forum=831&msgid=87714586

 

Published Saturday, October 21, 2006 4:28 PM by Justin-Josef Angel [MVP]
תגים:,

Comments

No Comments