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

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

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

WPF שמירת שינויים בדטה גריד

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

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

    פורסם במקור בפורום CODE613 ב03/03/2014 19:58 (+02:00)

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

      @רחמים

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

      עדכון תא באופן מיידי זה ע"יinotify property changed
      הבעיה שדטה סט לא עובד עם זה ולכן צריך במקרה כזה לחבר את הדטה סט למחלקות כפי שדובר בפורום כבר בעבר
      אפשר לחבר לאירוע של שינוי אבל לענ"ד זה קצת מוגזם לעשות כך לכל תא
      גם ב-notify יתכן שזה לא כ"כ כדאי בטח יש כאן אנשים שמבינים יותר טוב בזה
      אולי זה יפתור לך גם את שאלתך השניה במקצת

      פורסם במקור בפורום CODE613 ב03/03/2014 22:30 (+02:00)

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

        מוסיפים אירוע שינוי לDataTable. משהו כזה:

        AddHandler dataSetInstant.TableName.RowChanged, Sub(s, e) DataAdapterInstance.Update(e.Row)
        

        פורסם במקור בפורום CODE613 ב04/03/2014 13:04 (+02:00)

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

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

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

          זה בדיוק מה שעשיתי, אולם ארוע זה לא קופץ אלא כאשר המשתמש עוזב את השורה ולא כאשר הוא עובר לתא אחר באותה שורה וכמו שכתבתי לעיל.

          פורסם במקור בפורום CODE613 ב04/03/2014 13:11 (+02:00)

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

            אם ככה שמואל צדק לגמרי.
            עריכה: יש לך אמנם אירוע ColumnChanged שהוא ברמת תא, בדוק אם זה עוזר לך.

            פורסם במקור בפורום CODE613 ב04/03/2014 13:16 (+02:00)

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

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

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

              אם הבנתי נכון מה ששמואל אמר אז הבינדינג צריך להראות כך:

              BindingOperations.SetBinding(myDataGrid, ItemsControl.ItemsSourceProperty,
                                                   New Binding With {.NotifyOnTargetUpdated = True,
                                                                     .UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged})
              

              אבל זה לא עוזר 😞

              פורסם במקור בפורום CODE613 ב04/03/2014 13:27 (+02:00)

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

                @רחמים

                אם הבנתי נכון מה ששמואל אמר אז הבינדינג צריך להראות כך:

                @שמואל

                עדכון תא באופן מיידי זה ע"יinotify property changed
                [u:hn7r01xj]הבעיה שדטה סט לא עובד עם זה ולכן צריך במקרה כזה לחבר את הדטה סט למחלקות כפי שדובר בפורום כבר בעבר [/u:hn7r01xj]
                אפשר לחבר לאירוע של שינוי אבל לענ"ד זה קצת מוגזם לעשות כך לכל תא
                גם ב-notify יתכן שזה לא כ"כ כדאי בטח יש כאן אנשים שמבינים יותר טוב בזה
                אולי זה יפתור לך גם את שאלתך השניה במקצת

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

                פורסם במקור בפורום CODE613 ב04/03/2014 13:47 (+02:00)

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

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

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

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

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

                  ניסיתי גם להשתמש בארוע ColumnChanged אבל גם הוא קופץ רק לאחר שהפוקוס זז לשורה אחרת.

                  פורסם במקור בפורום CODE613 ב04/03/2014 14:07 (+02:00)

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

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

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

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