איך להציג 3 מצבים בעמודה מסוג תאריך
-
איך ניתן להציג בעמודה מסוג תאריך 3 מצבי נתונים
- תאריך
- null
- משהו (?) המסמל שלא אמור להתקבל תאריך בתא זה
דוגמא:
הצורך הוא לעקוב ברמה טבלאית
מה הוזמן (מופיע תאריך)/ טרם הוזמן (null)
והיות שיכול להיות שהלקוח כלל לא הזמין את הרכיב - אני מעוניין לסמן בצורה כלשהיא (חור שחור) שהתא אינו רלוונטיכאשר הופכים את התאריך לטקסט
מאבדים את יכולת המיון לפי הערך התאריכי
(המיון עובד כטקסט בלבד)
ספציפי אצלי
מסד נתונים: sql
c# winform: DataGridView / DataTableהשאלה מבחנתי כרגע
יותר מאשר למצוא קוד מתאים
זה כיצד אתם מתמודדים בתצוגה מסוג כזה
ומציגים את התוצאה ללקוח
בכל שפה / צורה שהיא (לא רלוונטי תשובות מאקסל/שיטס)
ועדיין שומרים על היכולת לבצע מיון תאריכי(ניסוח נוסף לשאלה:
מה ניתן לעשות
בכדי לסמן שהתא אומנם null
איך אינו אמור להכיל גם בעתיד תאריך
כי הוא אינו רלוונטי) -
הגישה הטבעית זה לקסטם את התצוגה.
ב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 = "---"; } }
בשביל הבידול התצוגתי אני הייתי שם רקע אפור כשזה לא שייך ותא ריק ורגיל במקרה שזה אמור להתמלאות בהמשך.
-
@mekev ראשית, ברמת הנתונים: הואיל ויש משמעות כאן לערך null כדי לציין שהשדה עדיין לא קיבל ערך, לא ניתן להשתמש בו גם כדי לציין שהוא אינו אמור לקבל ערך כלל. אני הייתי משתמש במקרה הזה בשדה נוסף המגדיר את סטטוס השדה של התאריך. אפשר להשתמש בטיפוס בוליאני המציין האם השדה של התאריך פעיל, או בטיפוס אחר, תלוי בדיוק בלוגיקה העסקית שקובעת את הקריטריון לשדה הזה.
שנית, ברמת התצוגה, הייתי מיישם את הפתרון שהציע @dovid לעיל:- תא ריק - כאשר צפוי ערך
- תא אפור (ונעול) - כאשר לא צפוי ערך.