Error: Type [Ajax Object] has already been registered

28 באפריל 2010

פתרון להודעת שגיאה מהסוג הזה:   Sys.InvalidOperationException: Type has already been registered. The type may be defined multiple times or the script file that defines it may have already been loaded. A possible cause is a change of settings during a partial updateתיאור הבעייה: במקרים מסויימים (מייד אתאר את המקרה הספציפי שלי) כשמציבים אובייקט כלשהו של AJAX בתוך Update Panel נקבל הודעת שגיאה מהסוג הזה. במקרה שלי השתמשתי עם Rating של AjaxControlTollkit ועטפתי אותו עם RadAjaxPanel של טלריק, ובכל פעם שניסיתי לעשות Post Back מתוך הפאנל קבלתי את הודעת השגיאה הזאת. פיתרון הבעייה: אחרי קצת שוטטות בגוגל הגעתי לכאן מתואר שם...
תגיות: , ,
אין תגובות

Delete object in Entity Framework

24 באפריל 2010

  אם תנסו למחוק אובייקט ב - collection ב - entity framework בעזרת remove בצורה הבאה   Lecture lecture = entities.Lectures.Include("SelaRelatedCourses").First(); lecture.SelaRelatedCourses.Remove(lecture.SelaRelatedCourses.ElementAt(0));   אתם יכולים לקבל הודעת שגיאה בהסגנון הזה   A relationship is being added or deleted from an AssociationSet 'FK_Relatedcourses_Lecture'. With cardinality constraints, a corresponding 'SelaRelatedCourses' must also be added or deleted.     כדי למחוק בצורה נכונה עדיף לכתוב ככה   entities.DeleteObject(lecture.SelaRelatedCourses.ElementAt(0));
תגיות: ,
אין תגובות

The Controls collection cannot be modified because the control contains code blocks (i.e. <% … %>)

23 באפריל 2010

  אני מניח שכבר נתקלתם בהודעה המעצבנת הזאת - בדרך כלל מקבלים את ההודעה כשיש לנו סקריפט שכזה   btnUpdateId = '<%= btnUpdateCreate.ClientID %>'; imgLectId = '<%= imgLect.ClientID %>'; cvEmailUniqeId = '<%= cvEmailUniqe.ClientID %>';   לא ברור לי מתי מקבלים את ההודעה הזאת - כלומר מה צריך לעשות כדי לדפוק את הקוד כדי שזה יקרה, אבל הפיתרון הוא די פשוט.   פשוט תעטפו את הקוד עם div שהוגדר כ - runat=server     <div runat="server">       <script type="text/javascript">         btnUpdateId = '<%= btnUpdateCreate.ClientID %>';         imgLectId = '<%= imgLect.ClientID %>';         cvEmailUniqeId = '<%= cvEmailUniqe.ClientID %>';     </script>   </div>
תגיות: , ,
6 תגובות

Unable to update the EntitySet '[TableName]' because it has a DefiningQuery and no <InsertFunction> element exists in the <ModificationFunctionMapping> element to support the current operation

  היה לי בבסיס הנתונים קישור פשוט של רבים לרבים     מבחינת האובייקטים ב - Entity Framework זה נוצר בצורה הזאת       הקשר בין הרצאה לתגים הוא רבים לרבים. כשניסיתי לכתוב את הקוד הזה     Lecture lecture = entities.Lectures.First(); Tag tag = new Tag() { Name = "acbd" }; lecture.Tags.Add(tag);   entities.SaveChanges();   קבלתי את ההודעה הבאה     Unable to update the EntitySet 'TagLecture' because it has a DefiningQuery and no <InsertFunction> element exists in the <ModificationFunctionMapping> element to support the current operation     התחלתי לחקור את הנושא ופתחתי את קובץ ה - xml שה - EF מייצר.   וראיתי את ההודעה הבאה    <!--Errors Found During Generation:      warning 6002: The table/view 'SCO.dbo.TagLecture' does not have a primary key...
3 תגובות

XMLHttpRequest vs. PostBack

21 באפריל 2010

  זה נכון שכדי לעבוד עם AJAX אנחנו עובדים עם ספריות כמו של ScriptManager או של jQuery, אבל בכל זאת חשבתי לכתוב דוגמא לשימוש ב - XMLHttpRequest לבד.   את הדוגמא אפשר להוריד מכאן.   נניח שיש לנו מסך שנראה כך:   המשתמש יבחר שם - במידה והוא לוחץ על הלחצן server אנחנו ניגש לשרת בצורה רגילה (כלומר PostBack) ונביא נתונים אודות המשתמש. במידה והוא לוחץ על הלחצן xml אנחנו ניגש לשרת בעזרת XMLHttpRequest ונביא את הנתונים.     קוד ה - HTML     <div id='mydiv'></div>   <asp:ListBox ID="name" runat="server">     <asp:ListItem>shlomo</asp:ListItem>     <asp:ListItem>noam</asp:ListItem>     <asp:ListItem>yossi</asp:ListItem> </asp:ListBox>   <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Server" /> <input id="Button2" type="button" value="xml" onclick="GetHtml()" />       יש לנו handler שיודע להחזיר html לפי פרמטר בשם name - הנה...
תגובה אחת

Add functionality using Document Object Model Prototypes (IE8)

20 באפריל 2010

  אחד מהיכלות החדשות שיש לנו ב - IE8 זה ההוספה של prototype ל - DOM.   אני לא אסביר בפוסט הזה מהו ה - prototype. אבל אם אתם לא מכירים את המושג (שקיים כבר הרבה לפני IE8) אני ממליץ לכם לקרוא את הפוסט הזה (לפחות את החלק הראשון) - או את הפוסט הזה - Object Oriented Programming in JavaScript   ב - IE8 הוסיפו ל - DOM את היכולת לשנות ולהוסיף פונקציות בעזרת prototype.   לדוגמא. אני מניח שהרבה פעמים יצא לכל אחד מכם לכתוב פונקציה שנקראת כך:   function HideFunc(obj) {     obj.style.display = 'none'; }   ומן הסתם השתשמתם בפונקציה כדי להסתיר אלמנטים במסך.     שימו לב לקוד הבא:   function HideFunc() {     this.style.display...
אין תגובות

Invoke PageMethods (ScriptManager) synchronously

  בפוסט הזה התרעמתי על הצורה שמיקרוסופט מימשו את ה - PageMethods - כתבתי שהם כתבו harscode שכל הקריאות יהיו async.   כתוצאה מזה שאני חוקר כרגע את IE8 חקרתי קצת את הנושא של prototype ב - javascript מצאתי דרך לשנות ולהגדיר קריאות ב - PageMethods שיעכבו את המשך הריצה עד לקבלת תשובה.     לפני שאני אכתוב את הפיתרון נסתכל איך מיקרוסופט מימשו את ה - PageMethods. אם נחפור קצת בקובץ ה - javascript שמגיע עם ה - script manager נראה את הקוד הבא.   function Sys$Net$XMLHttpExecutor$executeRequest() {     // some code...       var verb = this._webRequest.get_httpVerb();     this._xmlHttpRequest.open(verb, this._webRequest.getResolvedUrl(), true);       // some code.. }   בכל פעם שנפעיל מתודה בעזרת ה -...
אין תגובות

IE8 – DOM Storage

16 באפריל 2010

  אני מכין חומר בימים אלו על Internet Explorer 8 - למעשה כבר התחלתי לכתוב על זה בעבר, וכעת אני מתכוון להמשיך.   בפוסט הנוכחי אני אדבר על אחד מהתכונות הטובות ביותר שיש ב - IE8. Dom Storage   מפתחי WEB יודעים שיש כמה דרכים לשמור מידע, חלק מהדרכים הם בצד הלקוח וחלק בצד השרת, בדרך כלל גם כששומרים מידע בצד הלקוח השרת מכיר את המידע, הדרך הוותיקה והנפוצה לשמור בצד הלקוח כמובן עוגיות, עוגיות הם הדרך הטובה ביותר לשמור מידע בצד הלקוח לאורך זמן.   כמובן שגם לעוגיות יש חסרונות, כשהחיסרון הגדול הוא שזה לא קל לגשת אל המידע שנשמר בעוגייה (צריך לשחק עם מחרוזות) וכמובן...
תגיות: , , ,
אין תגובות

Add Javascript file form code in user control

15 באפריל 2010

  נניח שיש לכם User Control שמשתמש בפונקציות שנמצאות בקובץ javascript, צריך כמובן להוסיף הפנייה ב - html לקובץ ה - javascript.   השאלה - איפה לשים את ההפנייה, הכי קל כמובן זה לשים אותו בדף שמשתמש ב - User Control, הבעייה היא כמובן שנצטרך תמיד לזכור בכל דף שבו משתמשים עם ה - User Control להוסיף את ההפנייה לקובץ ה - javascript.   אופצייה שנייה היא להוסיף את ההפנייה בקובץ ה - ascx (כלומר ב - UserControl בעצמו) ואז בכל דף שיהיה בו את ה - User Control הוא יביא איתו את קובץ ה - javascript שזה הרבה יותר הגיוני.   אבל זה גורם לנו לבעייה,...
תגיות: , , , ,
אין תגובות