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

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

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

WPF יצירת עמודת מזהה בדטה-גריד

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

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

    תודה לכולם,
    ושבת שלום.

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

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

      תוסיף לאובייקט שלך (כמו האנשי קשר) שדה סטטי שיספור איפה אוחזים.
      בבנאי תקצה את המספר הפנוי. ככה:

      Shared inc As Integer
      
      Dim _id As Integer
      Public ReadOnly Property ID
          Get
              Return ID
          End Get
      End Property
      
      Public Sub New()
          _id = inc
          inc += 1
      End Sub
      

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

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

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

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

        כל כך גאוני כל כך פשוט!
        תודה רבה.

        נ.ב
        צריך לתקן בקוד במקום Return ID
        Return _id

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

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

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

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

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

            @רחמים

            נ.ב
            צריך לתקן בקוד במקום Return ID
            Return _id

            נכון, התבלבלתי.

            לבעיה שכתבת אתה צריך לקבוע את _id (לפי מקור נתוניך) מתוך קונסטרקטור סטטי:

            Shared Sub New()
                'read file from disk
                'and set _id = max + 1
            End Sub 
            

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

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

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

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

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

              @דוד ל.ט.

              לבעיה שכתבת אתה צריך לקבוע את _id (לפי מקור נתוניך) מתוך קונסטרקטור סטטי:

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

              @דוד ל.ט.

              אבל זה ממש לא פיתרון טוב עבור מסד נתונים, מכמה וכמה סיבות.

              תוכל לפרט בבקשה אני חייב לדעת.

              @דוד ל.ט.

              אם זה ממש מסד, אל תטפל במספור אוטומטי, בשביל מה לך.

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

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

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

                @רחמים

                @דוד ל.ט.
                לבעיה שכתבת אתה צריך לקבוע את _id (לפי מקור נתוניך) מתוך קונסטרקטור סטטי:

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

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

                @רחמים

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

                תוכל לפרט בבקשה אני חייב לדעת.

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

                @רחמים

                @דוד ל.ט.
                אם זה ממש מסד, אל תטפל במספור אוטומטי, בשביל מה לך.

                אני חייב שיהיה לי מזהה יחודי לכל רשומה בטבלה

                אם זה כדי שלכל אלמנט יהיה זיהוי, אתה יכול להשתמש בשמו.

                @רחמים

                אלא איך אפשר אחרת?
                @רחמים
                כך שזה מסד לכל דבר רק בלא SQL ובלא דטה-סיט ובלא אקסס.

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

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

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

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

                  @דוד ל.ט.

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

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

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

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

                    תהיה בריא.
                    לא ניסיתי לשכנע, שים לב.

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

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

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

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

                      במה שכתבתי אודות הקונסטרקטור הסטטי הייתה לי טעות, במקום _id צריך לכתוב שמה (פעמיים בהודעה) inc.

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

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

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

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

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

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

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