WPF שמירת מצב עמודות בדטה-גריד
-
בטדה בייס הכי טוב אם אתה רוצה לשמור לכל משתמש את העדפותיו, תעשה שיהיה אינדקס של עמודות וישמר בטבלה ובעת עליית האובייקט תריץ קוד שיסדר אותם לפי האינדקס כך אני עושה וזה חוסך הרבה צער לעם ישראל של סידור עמודות כל פעם מחדש.
פורסם במקור בפורום CODE613 ב24/12/2013 16:24 (+02:00)
-
קודם כל תודה לכולם על כל המידע
כעת עשיתי לולאה שעוברת על כל העמודות שבדטה-גריד, ואמורה לרשום בדיסק את DisplayIndex ואת מה שכתוב בכותרת העמודה
אלא שאז קיבלתי שגיאה:
The calling thread cannot access this object because a different thread owns it.כלומר אני לא יכול לגשת לדטה-גריד בכלל משום מה, אולי בגלל שאני מנסה לשמור את הנתונים ב Overrides Sub Finalize()
ובאמת ניסיתי לשמור באמצע זמן ריצה הכל עבד טוב, אבל ה Finalize כנראה פועל ב thread נפרד.אז מה אני צריך לעשות כתחליף?
יצויין שהשמירה צריכה להעשות בתוך מחלקה שהיא לא חלון שיש לו ארוע לפני סגירת החלון. יש משהו שקודם ל Finalize כאשר עדיין נמצאים ב thread הראשי של היישום ?פורסם במקור בפורום CODE613 ב24/12/2013 18:28 (+02:00)
-
כי זו מחלקה שנמצאת ב DLL חיצוני ולא קשורה כלל לממשק, זו מחלקה שמנהלת את הנתונים, שומרת בדיסק קוראת מהדיסק, ומגישה את האוסף לכל צורך שהוא כמו להציג בפקד גליון נתונים וכדומה, כך שכל מה שקשור למסד נתונים אני דוחף שם, ולכן אני רוצה שגם נושא סידור העמודות יהיה חלק מהגדרות גליון הנתונים השייך למסד. ובחלק של הממשק אני לא מתעסק עם כל זה רק עם להצהיר על מופע של טבלה כזו וכזו.
פורסם במקור בפורום CODE613 ב24/12/2013 18:47 (+02:00)
-
כי זו מחלקה שנמצאת ב DLL חיצוני ולא קשורה כלל לממשק, זו מחלקה שמנהלת את הנתונים, שומרת בדיסק קוראת מהדיסק, ומגישה את האוסף לכל צורך שהוא כמו להציג בפקד גליון נתונים וכדומה, כך שכל מה שקשור למסד נתונים אני דוחף שם, ולכן אני רוצה שגם נושא סידור העמודות יהיה חלק מהגדרות גליון הנתונים השייך למסד. ובחלק של הממשק אני לא מתעסק עם כל זה רק עם להצהיר על מופע של טבלה כזו וכזו.
יפה מאוד שאתה מפריד את הממשק מהעיצוב, זה תכנות נכון מאוד.
לא הבנתי אבל למה את איסוף המידע על העמודות (שבכל מקרה זה חלק עיצובי), אתה רוצה לעשות מ"בחוץ".
את השמירה תעשה איפה שבא לך, אבל איסוף המידע על העמודות מקומו בקוד של החלון.פורסם במקור בפורום CODE613 ב24/12/2013 19:01 (+02:00)
-
כי אני רוצה להגיש למתכנת [כלומר לעצמי] את המסד שאני בונה, כאילו היה אקסס על כל מעלותיו ללא חסרונותיו, ולכן אני בונה בתוך המסד: טבלה גנארית שמנהלת את הנתונים כנ''ל ומנהלת את הקשרים בין הטבלאות, וגליון נתונים גנארי שזה פקד שבקשר עם הטבלה הגנארית ויכול גם לשמש כגליון משנה בתוך טופס או בתוך גליון אחר, וטופס גנארי שמציג רשומה אחר רשומה עם נווט כו' וכו'.
כך שהכל כלול בתוך המסד, ומה שנשאר לעשות בכל תוכנה שארצה להשתמש בה במסד נתונים, זה רק ליצור מחלקה עם כמה מאפיינים כאשר כל מאפיין הוא בעצם עמודה בטבלה, וליצור מופע חדש של טבלה גנארית עבור מחלקה זו, ואז יש לי טבלה עם גליון וטופס וכו' וכו', וכך עבור כל טבלה שאני צריך באותה תוכנית, וכן להגדיר את הקשרים בין הטבלאות אם יש כאלה.ולכן גם נושא של שמירת סדר העמודות אני דוחף לתוך המסד הגנארי ולא אצטרך לזכור לטפל בזה בכל תוכנה.
פורסם במקור בפורום CODE613 ב24/12/2013 19:13 (+02:00)
-
בסוף חשבתי לעצמי במקום לשים את האחריות על שמירת העמודות במחלקה של הטבלה הגנארית, אני אשים את זה בפקד גליון הנתונים, שהרי הדטה-גריד מופיע בגליון הזה ושמירת מצב העמודות קשור אליו, ובכל פקד יש ארוע לפני ה Finalize שנקרא Unloaded ושם שמתי את הפקודה לשמירת מצב העמודת.
פורסם במקור בפורום CODE613 ב25/12/2013 12:52 (+02:00)