this._postBackSettings.async is null or not an object - hidden input of type text can fix it
תוך כדי פיתוח UserControl שאמור לבצע השלמה אוטומטית נתקלנו בהודעת השגיאה הבאה:
"Microsoft JScript runtime error: ‘this._postBackSettings.async’ is null or not an object
בקצרה הפקד מכיל תיבת טקסט, ושדה hidden בשביל הערך הנבחר, ותוך כדי הקלדה מביא מהשרת את ערכי ה Select שמוצגים ע"י לינקים בתוך div ,
הגישה אל השרת מתבצעת ע"י WebMethod אם עובדים עם MS Ajax למרות שגם אפשר לחבר אותו לכל פונקציה אחרת שתביא את הנתונים מהשרת (AjaxPro).
כמו כן ישנו button עם display:none לטובת autoPostBack אם רוצים להשתמש בפקד בתוך UpdatePanel ולבצע פונקצית onSelected בשרת.
לחיצה על Enter מבצעת בחירה של הערך בפקד ומוציאה אותו מפוקוס.
בתהליך הפיתוח השתמשנו בדף דוגמא ובו שני פקדים מהסוג הזה, לקראת סוף הפיתוח השארנו פקד אחד בשביל לבדוק התנהגות מסויימת,
בשלב זה לחיצה על Enter גרמה ל postBack או ל error הנדון.
האינטואיציה הראשונית - זה בטח ה button אשם? - אז זהו שלא, ניסינו להוריד אותו אך השגיאה המשיכה.
האינטואיציה המשנית - אם הבעיה לא עולה כשיש שני פקדים - אולי נוסיף עוד תיבת טקסט (במקום עוד פקד על כל חלקיו) - פתר את הבעיה.
לבסוף - הוספת input מסוג text צד לקוח לחלוטין עם display:none פתרה את הבעיה.
כיוון שהפתרון נראה לי "קצת" עקום חיפשנו (יותר נכון - שי חפר קצת במנוע החיפוש האהוב עליו) ולא מצאנו פתרון יותר נקי מהפתרון שלנו (החלפת ה button ב linkButton או UseSubmitBehavior="false" לא פתרו את הבעיה).
שני לינקים עם פתרונות שונים (גם הפתרון בו בחרנו נמצא שם):
from the asp.net forums
JScript Exception in AJAX Control Toolkit
בעיות מהסוג הזה מעלות תהיות לגבי הרצון לעבור לשימוש ב MS Ajax על פני AjaxPro + ספרית client חזקה כמו jquery.