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

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

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

WPF לחצן שונה בראש שורה האחרונה בדטה-גריד

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

    בד"כ אתה מעדיף קוד, אז אם יש לך DataGridRow מסויימת ביד (למשל באירוע לואדינג כמו שעשית בעבר) והיא נקראת dr תוכל לבדוק ככה:

    If dr.Item = CollectionView.NewItemPlaceholder Then
        dr.HeaderTemplate = XXX
    End If
    

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

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

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

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

      תודה רבה,
      עשיתי כעצתך כך:

      Private Sub RowHeadBtn_Loaded(sender As System.Object, e As System.Windows.RoutedEventArgs)
              Dim btn As Button = DirectCast(e.Source, Button)
              Dim DC = DirectCast(DirectCast(btn.TemplatedParent, ContentPresenter).Parent, StackPanel).DataContext
              If DC Is CollectionView.NewItemPlaceholder Then
                  btn.Content = "*"
              End If
          End Sub
      

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

      שאלה.png

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

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

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

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

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

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

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

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

          אגב אני תמה למה במקומו הוא (בפרטי איש קשר) הוא השתנה אחרי שהוספת.

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

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

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

            @רחמים

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

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

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

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

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

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

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

              אני חושב שכאשר אתה ממלא שורה חדשה אז השורה עם הכפתור עם הכוכבית קופץ קדימה, ואתה למעשה ממלא שורה שנוצרה באותו רגע, זה נדמה כאילו אתה מלאת את השורה האחרונה אבל למעשה השורה האחרונה קפצה לסוף ואתה מלאת שורה שנוצרה ברגע זה ממש ולכן גם הלחצן שלה יש לו '+' ולא כוכבית.

              אין איזה טריגר לזה

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

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

                @רחמים

                אני חושב שכאשר אתה ממלא שורה חדשה אז השורה עם הכפתור עם הכוכבית קופץ קדימה, ואתה למעשה ממלא שורה שנוצרה באותו רגע, זה נדמה כאילו אתה מלאת את השורה האחרונה אבל למעשה השורה האחרונה קפצה לסוף ואתה מלאת שורה שנוצרה ברגע זה ממש ולכן גם הלחצן שלה יש לו '+' ולא כוכבית.

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

                @רחמים

                אין איזה טריגר לזה

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

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

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

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

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

                  @דוד ל.ט.

                  למה טריגר, אתה הולך עם קוד. ואם טריגר, אז עד הסוף, לא חצי קוד וחצי טריגר.

                  אפשר לכותב טריגר גם בתוך הקוד, שכל כל XAML אפשר לתרגם לקוד.

                  @דוד ל.ט.

                  שמתי באירוע טעינה שישנה את הכיתוב לזמן דקות+שניות.

                  שמת בטעינה של הלחצן? או בטעינה של ה RowDetails ?

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

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

                    @רחמים

                    @דוד ל.ט.
                    למה טריגר, אתה הולך עם קוד. ואם טריגר, אז עד הסוף, לא חצי קוד וחצי טריגר.

                    אפשר לכותב טריגר גם בתוך הקוד, שכל כל XAML אפשר לתרגם לקוד.

                    מקוה שהבנת אותי אף על פי כן.

                    @רחמים

                    @דוד ל.ט.
                    שמתי באירוע טעינה שישנה את הכיתוב לזמן דקות+שניות.

                    שמת בטעינה של הלחצן? או בטעינה של ה RowDetails ?

                    אכן בטעינת לחצן.

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

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

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

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

                      @דוד ל.ט.

                      אז האירוע שלך צריך להיות שורה חדשה/מס' שורות השתנה וכדומה.

                      איך נקרא ארוע כזה בדטה-גריד? מה שאני יודע על הוספת שורות זה ארוע CollectionChanged עבור ObservableCollection אבל ארוע זה קופץ מיד איך שהאוסף משתנה עוד לפני שהדטה-גריד מוסיף שורה.

                      פורסם במקור בפורום CODE613 ב27/12/2013 08:49 (+02:00)

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

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

                        Private Sub dg_LoadingRow(sender As Object, e As DataGridRowEventArgs)
                            If e.Row.Item.Equals(CollectionView.NewItemPlaceholder) Then
                                e.Row.Header = "*"
                            Else
                                e.Row.Header = "+"
                            End If
                        End Sub
                        

                        ממילא תעשה כך, רק במקום שינוי תוכן הכותרת הצב שם טמפלט מתאימה.

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

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

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

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

                          תודה רבה זה ממש טוב!!

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

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

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

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

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