דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. ארכיון code613m
  4. WPF תיבה משולבת בדטה-גריד

WPF תיבה משולבת בדטה-גריד

מתוזמן נעוץ נעול הועבר ארכיון code613m
14 פוסטים 2 כותבים 657 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • רחמיםר מנותק
    רחמיםר מנותק
    רחמים מורחק
    כתב ב נערך לאחרונה על ידי
    #1

    על הדרך שעשינו באשכול הסמוך עם הבורר תאריכים אני רוצה לעשות עם תיבה משולבת, כלומר בבורר תאריכים עשינו שרק בשעת עדכון התא, מופיע הבורר ומציג מגוון של תאריכים, ואחר שתאריך מסויים נבחר בתא מוצג תאריך בודד,
    על הדרך הזו אני רוצה לעשות תיבה משולבת, שתציג מערך של מחרוזות, ולאחר שהמשתמש יבחר אחת מהן יופיע בתא רק מה הנבחר, מערך המחרוזות לא קבוע כמו Enum, אלא זה משהו דינמי שנקבע בזמן ריצה של התוכנית, כמו למשל רשימת אנשי קשר מטבלה אחרת וכדומה.

    איך עושים דבר כזה?
    תודה לכולם!

    פורסם במקור בפורום CODE613 ב18/12/2013 23:16 (+02:00)

    תגובה 1 תגובה אחרונה
    0
    • dovidD מנותק
      dovidD מנותק
      dovid ניהול
      כתב ב נערך לאחרונה על ידי
      #2

      אני מבין שבאופן כללי, שלא בתוך דטה גריד, אתה יודע לעשות תיבה משולבת עם ערכים דינמיים, ועם איגוד הנבחר למאפיין.
      אז פשוט צריך לעשות את זה בתוך הTemplateColumn.

      פורסם במקור בפורום CODE613 ב19/12/2013 11:04 (+02:00)

      מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

      בכל נושא אפשר ליצור קשר dovid@tchumim.com

      תגובה 1 תגובה אחרונה
      0
      • רחמיםר מנותק
        רחמיםר מנותק
        רחמים מורחק
        כתב ב נערך לאחרונה על ידי
        #3

        לא, אני לא יודע כרגע.
        גם ראיתי שיש DataGridComboBoxColumn אז אולי עדיף להשתמש בו במקום ב TemplateColumn ?

        פורסם במקור בפורום CODE613 ב19/12/2013 12:57 (+02:00)

        תגובה 1 תגובה אחרונה
        0
        • dovidD מנותק
          dovidD מנותק
          dovid ניהול
          כתב ב נערך לאחרונה על ידי
          #4

          @רחמים

          לא, אני לא יודע כרגע.
          גם ראיתי שיש DataGridComboBoxColumn אז אולי עדיף להשתמש בו במקום ב TemplateColumn ?

          נכון, לגמרי שכחתי.
          תמיד עדיף לחסוך אז אם אין לך דרישות מיוחדות תשתמש בו.
          ההגדרות הדרושות במרבית המקרים הם הללו:
          [u:j23yn1zl]א. הגדרות התיבת רשימה ברמת הפקד, אחיד לכל השורות.[/u:j23yn1zl]

          1. ItemsSource = מקור השורות של הרשימה.
          2. במידה והתצוגה הנדרשת היא לא האובייקט כולו אלא חלק ממנו,
            למשל רשימה של אובייקטים מסוג Person ורוצים שהתצוגה תרנדר כל פריט לפי מאפיין Name שנמצא באובייקט.
            במקרה כזה צריך להשתמש בDisplayMemberPath ולקבוע בו את שם המאפיין.

          [u:j23yn1zl]ב. הגדרות ברמת שורה:[/u:j23yn1zl]
          כעת מה שחשוב זה לקבוע מה הערך הנבחר = על איזה נתון ברמת השורה הוא מושפע ומשפיע.
          ישנם שתי דרכים. במידה וItemsSource מכיל איברים בני אותו הסוג של השדה ברמת השורה,
          יש להשתמש עם SelectedItemBinding בו יש לקבוע את האיגוד מרמת השורה. יש לשים לב שזה בינדינג לכל דבר: בחירה מהרשימה תכתוב לתוך הערך ולהיפך.

          במידה והשדה מהשורה הוא מסוג אחר מסוג הפריטים ברשימה, למשל ID של האובייקט, שזה מספר ולא אובייקט,
          יש לקבוע
          א. SelectedValuePath בו נקבע איזה שדה מתוך האובייקט נחשב הערך הנבחר.
          ב. SelectedValueBinding שזה איגוד מהשדה ברמת השורה לערך הנבחר (ה"ערך" נחשב השדה שנכתב בSelectedValuePath. אם לא נכתב שדה, אז זה מחזיר את כל האובייקט בדומה לאפשרות א).

          פורסם במקור בפורום CODE613 ב19/12/2013 13:58 (+02:00)

          מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

          בכל נושא אפשר ליצור קשר dovid@tchumim.com

          תגובה 1 תגובה אחרונה
          0
          • רחמיםר מנותק
            רחמיםר מנותק
            רחמים מורחק
            כתב ב נערך לאחרונה על ידי
            #5

            תודה רבה על ההסבר המפורט !
            אנסה בע''ה ליישם את הדברים.

            פורסם במקור בפורום CODE613 ב19/12/2013 15:54 (+02:00)

            תגובה 1 תגובה אחרונה
            0
            • רחמיםר מנותק
              רחמיםר מנותק
              רחמים מורחק
              כתב ב נערך לאחרונה על ידי
              #6

              יישמתי את הכל בהצלחה, רק שקרתה משום מה בעיה מוזרה, כאשר אני לוחץ על ראש הדטה-גריד כדי למיין את העמודה של המשולבות כל הערכים נאלמים כלא היו!

              אפרט יותר:

              1. יש לי אוסף של אנשי קשר, ואוסף של הזמנות. כל אוסף מוצג בדטה-גריד אחר.
              2. בדטה-גריד שמציג את אוסף ההזמנות עשיתי את העמודה הנ''ל עם המשולבות.
              3. כל משולבת מציגה את הרשימה המלאה של אנשי הקשר כי הגדרתי את ItemsSource של עמודה זו לאוסף של אנשי הקשר.
              4. הגדרתי כמו שהסברת את SelectedValuePath ואת SelectedValueBinding, ואחר בחירת איש קשר במשולבת - שם האיש קשר מופיע בתא.

              אולם לאחר שאני ממיין את העמודה של המשולבות כל התאים בעמודה הופכים להיות ריקים!

              פורסם במקור בפורום CODE613 ב19/12/2013 18:04 (+02:00)

              תגובה 1 תגובה אחרונה
              0
              • רחמיםר מנותק
                רחמיםר מנותק
                רחמים מורחק
                כתב ב נערך לאחרונה על ידי
                #7

                אחר כך ראיתי שאע''פ שהכל מוצג כשורה יש כאן שגיאה שעשיתי, והיא:
                ש SelectedValueBinding הגדרתי עם שם מאפיין מהטיפוס של שורה במשולבת, ולא מטיפוס של שורה בדטה-גריד כך, שלמעשה כאשר בחרתי משהו במשולבת בחירה זו לא נשמרה בשום מקום רק הוצגה זמנית הדטה-גריד ולכן בשעת המיון הכל נאלם כי ערכים אלו לא היו קיימים בתוך האוסף המוצג בדטה-גריד.

                כעת הגדרתי את SelectedValuePath ל ID שבטיפוס השורה של המשולבת, וזה נשמר במאפיין PersonID שבטיפוס של השורה של הדטה-גריד על ידי ש SelectedValueBinding מוגדר ל PersonID.

                אבל כעת ראיתי שכאשר לוחצים על ראש השורה הערכים מתמיינים לפי סדר עולה או יורד של ה ID אע''פ שלמעשה בתא מוצג שם האיש קשר, איך אפשר לעשות שהמיון יהיה ע''פ המוצג בתא ולא על פי SelectedValuePath ?
                ניסיתי גם להגדיר את ה SortMemberPath של העמודה עם המשולבות לאותו המאפיין ששמתי ב DisplayMemberPath של העמודה, אבל אז המיון בכלל לא עבד.

                מה עושים?
                תודה לכולם.

                פורסם במקור בפורום CODE613 ב19/12/2013 19:41 (+02:00)

                תגובה 1 תגובה אחרונה
                0
                • dovidD מנותק
                  dovidD מנותק
                  dovid ניהול
                  כתב ב נערך לאחרונה על ידי
                  #8

                  SortMemberPath עושה את מה שאתה רוצה.
                  תנסה לבדוק שהכל תקין. לדוגמא, שנה את גם הDisplayMemeberPath לאותו שם שהקצית לSortMemberPath.

                  פורסם במקור בפורום CODE613 ב19/12/2013 21:28 (+02:00)

                  מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                  בכל נושא אפשר ליצור קשר dovid@tchumim.com

                  תגובה 1 תגובה אחרונה
                  0
                  • רחמיםר מנותק
                    רחמיםר מנותק
                    רחמים מורחק
                    כתב ב נערך לאחרונה על ידי
                    #9

                    @דוד ל.ט.

                    SortMemberPath עושה את מה שאתה רוצה.

                    מה כוונתך, הרי אני רוצה שימיין מחרוזות של שמות האנשים והוא במקום זה ממיין את התעודת זהות שלהם שזה הID ?

                    פורסם במקור בפורום CODE613 ב19/12/2013 21:50 (+02:00)

                    תגובה 1 תגובה אחרונה
                    0
                    • dovidD מנותק
                      dovidD מנותק
                      dovid ניהול
                      כתב ב נערך לאחרונה על ידי
                      #10

                      כוונתי? היא כ"כ עמוקה :)?
                      אתה אמרת שניסית את המאפיין SortMemberPath ובגלל זה זה לא עבד בכלל.
                      על זה אמרתי שאכן זו הדרך הנכונה ועליך לבדוק למה זה לא עובד.
                      אתה כתבת בו את הסטרינג Name?

                      פורסם במקור בפורום CODE613 ב19/12/2013 22:22 (+02:00)

                      מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                      בכל נושא אפשר ליצור קשר dovid@tchumim.com

                      תגובה 1 תגובה אחרונה
                      0
                      • רחמיםר מנותק
                        רחמיםר מנותק
                        רחמים מורחק
                        כתב ב נערך לאחרונה על ידי
                        #11

                        אכן כן,
                        עשיתי כך :
                        DisplayMemberPath = "שם פרטי" מאובייקט "איש קשר"
                        SelectedValuePath = "מס' תז" מאובייקט "איש קשר"
                        SelectedValueBinding = "מזהה איש קשר" מאובייקט "הזמנה"

                        ולגבי המיון:
                        SortMemberPath = SelectedValueBinding
                        ממיין את השמות לפי התעודת זהות ולא לי השם עצמו.
                        אם עושים:
                        SortMemberPath = SelectedValuePath
                        או:
                        SortMemberPath = DisplayMemberPath
                        אין מיון בכלל.

                        פורסם במקור בפורום CODE613 ב19/12/2013 22:46 (+02:00)

                        תגובה 1 תגובה אחרונה
                        0
                        • dovidD מנותק
                          dovidD מנותק
                          dovid ניהול
                          כתב ב נערך לאחרונה על ידי
                          #12

                          לא ברור מדבריך איך עשית.
                          בSortMemberPath אתה אמור להכניס "שם פרטי".

                          שים לב שחלק מהמאפיינים מקבלים מחרוזת טקסט פשוטה,
                          וחלק Binding מלא (אלו שמכילים את המילה הזאת בשמם).

                          פורסם במקור בפורום CODE613 ב22/12/2013 19:00 (+02:00)

                          מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                          בכל נושא אפשר ליצור קשר dovid@tchumim.com

                          תגובה 1 תגובה אחרונה
                          0
                          • רחמיםר מנותק
                            רחמיםר מנותק
                            רחמים מורחק
                            כתב ב נערך לאחרונה על ידי
                            #13

                            אם אני מכניס ל בSortMemberPath את ''שם פרטי'' אז המיון לא עובד בכלל, הצורה היחידה שהוא עובד זה רק אם אני מגדיר את בSortMemberPath ל SelectedValueBinding, אלא שאז הוא ממיין את המזהים ולא מה שמוצג על המסך בתוך כל תא.
                            לגבי הבינדיג והמחרוזות בדקתי שוב והכל בסדר.

                            פורסם במקור בפורום CODE613 ב22/12/2013 20:02 (+02:00)

                            תגובה 1 תגובה אחרונה
                            0
                            • dovidD מנותק
                              dovidD מנותק
                              dovid ניהול
                              כתב ב נערך לאחרונה על ידי
                              #14

                              @רחמים

                              הצורה היחידה שהוא עובד זה רק אם אני מגדיר את בSortMemberPath ל SelectedValueBinding, אלא שאז הוא ממיין את המזהים ולא מה שמוצג על המסך בתוך כל תא.

                              זה אמור לקרות גם אם לא הגדרת את SortMemberPath כלל.
                              אני לא מצליח לעזור לך. רק לפחות תידע איפה לחקור אז אני מכוון אותך מה אמורים לעשות.
                              למה אצלך לא עובד זה מה שנשאר לחקור אבל לכה"פ צמצמתי לך את החפירה.

                              בדרך אגב, אף פעם אל תחסוך בהעלאת קוד (רלוונטי כמובן), כי גם אם הוא תקין, אתה מרויח שנחסך דיון עליו.

                              פורסם במקור בפורום CODE613 ב22/12/2013 20:54 (+02:00)

                              מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                              בכל נושא אפשר ליצור קשר dovid@tchumim.com

                              תגובה 1 תגובה אחרונה
                              0

                              בא תתחבר לדף היומי!
                              • התחברות

                              • אין לך חשבון עדיין? הרשמה

                              • התחברו או הירשמו כדי לחפש.
                              • פוסט ראשון
                                פוסט אחרון
                              0
                              • דף הבית
                              • קטגוריות
                              • פוסטים אחרונים
                              • משתמשים
                              • חיפוש
                              • חוקי הפורום