Ha volte capita di voler gestire tramite il controllo PropertyGrid delle date i cui valori sono memorizzati in un database, diventa quindi necessario gestire il caso della data nulla.
Si supponga di avere la seguente tabella:
Config
ID (PK String)
Data (Date)
per cui si è proveduto a generare una DataTest tipizzato ConfigSchema contenente la DataTable tipizzata Config.
Per poter gestire i dati tramite un PropertyGrid è necessario costruirsi una Classe wrapper avente due proprietà ID e Data:
Public Class ConfigWrapper
Private _Row As ConfigSchema.ConfigRow
Public Sub New(ByVal row As ConfigSchema.ConfigRow)
Me._Row = row
End Sub
Public Property ID() As String
Get
Return Me._Row.ID
End Get
Set(ByVal Value As String)
Me._Row.ID = Value
End Set
End Property
Public Property Data() As Date
Get
Return Me._Row.Data
End Get
Set(ByVal Value As Date)
Me._Row.Data = Value
End Set
End Property
End Class
Si nota subito però che la presenza del valore DBNull in Me._Row.Data genera un'eccezione che rende impossibile modificare la proprietà Data. Nel caso però Me._Row.Data non contenga DBNull e si cancelli il valore della proprietà Data il PropertyGrid imposta Me._Row.Data al valore Date.MinValue.Possiamo quindi "mappare" il valore DBNull sul Date.MinValue e viceversa evitando di generare l'eccezione modificando come segue la proprietà Data:
Public Property Data() As Date
Get
If Me._Row.IsDataNull Then
Return Date.MinValue
Else
Return Me._Row.Data
End If
End Get
Set(ByVal Value As Date)
If Date.Equals(Value, Date.MinValue) Then
Me._Row.SetDataNull()
Else
Me._Row.Data = Value
End If
End Set
End Property