בינדינג לקומבובוקס עם ערכים שהוזנו ישירות בזאמל
-
במקביל לתוכנת התורמים שמשתמשת בSQL כתבתי תוכנה שלא משתמשת (לפחות כרגע..) בSQL
אלא שומרת את כל הנתונים למחלקות שבניתי.
כתבתי טופס עם כמה tabControl ואת הערכים שהמשתמש הזין אני שומר ע"י שימוש בבינדינג למופעים של המחלקות שכתבתי.השאלה היא מהו מחזיר בקומבובוקס? בניתי קומבו בוקס וכתבתי לו איזה אייטמים להציג, עכשיו כאשר המשתמש בוחר באחד מהם, איך אני מגדיר לו מה לשמור במשתנה? (בשונה מכאשר השתמשתי בSQL אז עשיתי בינדינג לטבלה נוספת, והצגתי ערך אחד מהטבלה ושמרתי את הID שלו; אך כאן הערכים המוצגים בקומבו הם ערכים שאני כתבתי בזאמל, ואיך הוא ידע מה לשמור בבינדינג???? האם בשביל זה צריך לכתוב קוד בC# או שיש דרך לעשות גם לזה בינדינג? תודה רבה!!!
קוד הזאמל:
<HeaderedContentControl Header="אמצעי תשלום"> <ComboBox Width="120" x:Name="howToDonationCB"> <ComboBox.Items> <ComboBoxItem>כרטיס אשראי</ComboBoxItem> <ComboBoxItem>הוראת קבע</ComboBoxItem> <ComboBoxItem>מזומן</ComboBoxItem> <ComboBoxItem>PayPal</ComboBoxItem> <ComboBoxItem>שיק</ComboBoxItem> </ComboBox.Items> </ComboBox> </HeaderedContentControl>
פורסם במקור בפורום CODE613 ב23/07/2015 18:28 (+03:00)
-
לדעתי עדיף לשמור את המחרוזת ולא את האינדקס הנבחר, משום שאין קשר אמיתי בין האינדקס למחרוזת [אלא במקרה כרטיס אשראי נפל על אינדקס 0], והנתון החשוב פה זו המחרוזרת, שמודיעה לנו באיזה אמצעי תשלום בחר המשתמש
דבר נוסף, אם בהמשך תרצה להוסיף לרשימה עוד פריט או תרצה לשנות את סדר הפריטים זה לא יקלקל את הרשומות שכבר קיימות במסד הנתונים שלך, כי כל אחד ימצא על פי המחרוזת היחודית שלו ולא על פי אינדקס של הקומבו.פורסם במקור בפורום CODE613 ב23/07/2015 21:25 (+03:00)
-
לדעתי עדיף לשמור את המחרוזת ולא את האינדקס הנבחר, משום שאין קשר אמיתי בין האינדקס למחרוזת [אלא במקרה כרטיס אשראי נפל על אינדקס 0], והנתון החשוב פה זו המחרוזרת, שמודיעה לנו באיזה אמצעי תשלום בחר המשתמש
דבר נוסף, אם בהמשך תרצה להוסיף לרשימה עוד פריט או תרצה לשנות את סדר הפריטים זה לא יקלקל את הרשומות שכבר קיימות במסד הנתונים שלך, כי כל אחד ימצא על פי המחרוזת היחודית שלו ולא על פי אינדקס של הקומבו.רחמים, אתה מתייחס לשינוי האינדקס, ולא מתייחס לשינוי המחרוזת.
מה יקרה אם מחר הוא יחליט שזה לא נקרא יותר "כרטיס אשראי" אלא "כ. אשראי"?
או אם יחליט להעביר את כל המערכת לשפה אחרת?לדעתי עדיף לתת לכל אפשרות KEY קבוע לפי מספר שהוא יחליט, ולשמור את המספר.
אם הוא יחליט לעבור לDB, כל מה שהוא יצטרך לעשות זה לדאוג שבטבלה הID של כל אפשרות יתאים לKEY שהוא קבע.פורסם במקור בפורום CODE613 ב23/07/2015 22:14 (+03:00)
-
אם אני מבין נכון אז selectedIndex זה שומר את המס' של הערך, ו- selectedValue שומר את הערך שלו.
אם אני רוצה לשמור את שניהם, אז צריך בשביל זה שני מאפיינים אחד שמציג את הkey ואחד את הערך עצמו.
זה לא סתם מסורבל, רחמים? לא עדיף לשמור רק את הkey כמו שהציע clickOne??
תודה רבה!פורסם במקור בפורום CODE613 ב28/07/2015 22:50 (+03:00)
-
selectedIndex הוא האינדקס של הפריט הנבחר ברשימת הפריטים הקיימים בקומבו
selectedValue זה הפריט הנבחר בעצמו
דוד הציע לשמור את האינדקס
אני הצעתי לשמור את המחרוזת שזה הפריט עצמו
קליקון הציע להצמיד לכל מחרוזת גם KEY ולשמור את ה KEY אבל זה כבר לא אפשרי בזאמל אלא צריך להצהיר על מחלקה שתכיל פריט ומפתח, או שתחפש מחלקה מוכנה נראה לי שהיא נקראת DictionaryEntry וסתם כך נראה לי שהשיטה MVVM מצריכה כאן דווקא כן להשתמש בקודפורסם במקור בפורום CODE613 ב29/07/2015 10:47 (+03:00)
-
@דוד ל.ט.
הערה: SelectedItem זה הערך עצמו ואילו SelectedValue מחזיר ערך בהתאם להגדרה SelectedValuePath
בקשר לשאלה והמבוכה, אכן מעצבן, אין לי דרך זהב.
תודה על ההערה, בדיוק במקום! באמת רציתי לשאול אתמול מה ההבדל בין סוגי הselected...
ואז נזכרתי בסוד המסחרי של ארכיטקט ועשיתי שאלת רב (אצל הרב גוגל..)
וקיבלתי תשובה מstackoverflow (אחרי שקצת שברתי את השיניים...)פורסם במקור בפורום CODE613 ב29/07/2015 15:39 (+03:00)