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

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

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

איך להציג 3 מצבים בעמודה מסוג תאריך

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

    איך ניתן להציג בעמודה מסוג תאריך 3 מצבי נתונים

    1. תאריך
    2. null
    3. משהו (?) המסמל שלא אמור להתקבל תאריך בתא זה

    דוגמא:
    497973f2-705b-4c0a-9851-01bd34f14049-image.png

    הצורך הוא לעקוב ברמה טבלאית
    מה הוזמן (מופיע תאריך)/ טרם הוזמן (null)
    והיות שיכול להיות שהלקוח כלל לא הזמין את הרכיב - אני מעוניין לסמן בצורה כלשהיא (חור שחור) שהתא אינו רלוונטי

    כאשר הופכים את התאריך לטקסט
    מאבדים את יכולת המיון לפי הערך התאריכי
    (המיון עובד כטקסט בלבד)


    ספציפי אצלי
    מסד נתונים: sql
    c# winform: DataGridView / DataTable

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

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

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

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

      dgv.Columns[0].DefaultCellStyle.NullValue = "-";
      

      בשביל עיצוב לפי ערך ובמיוחד בשביל לשנות ערך על פי מאפיינים אחרים בשורה, חייבים להשתמש באירוע של CellFormatting, למשל ככה:

      	var coll = dgv.Columns[e.ColumnIndex];
      	if(coll.Name == "DateColName")
      	{
      		if (e.Value == null)
      		{
      			e.CellStyle.BackColor = System.Drawing.Color.Gray;
      			e.CellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
      			e.Value = "---";
      		}
      	}
      

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

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

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

      תגובה 1 תגובה אחרונה
      3
      • OdedDvirO מנותק
        OdedDvirO מנותק
        OdedDvir
        השיב לmekev ב נערך לאחרונה על ידי
        #3

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

        1. תא ריק - כאשר צפוי ערך
        2. תא אפור (ונעול) - כאשר לא צפוי ערך.
        תגובה 1 תגובה אחרונה
        3

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

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

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