PropertyGrid: gestione delle date nulle

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