OVH Cloud OVH Cloud

Type DateTime et valeur vide

1 réponse
Avatar
chris
Hello,

J'ai une page de saisie d'un contact. Dans le code behind, j'ai créé une
classe Contact dans lequel j'ai des méthodes insert(), update() ...
J'ai une propriété DateNaissance de type DateTime.
Lorsque j'enregistre mon contact. dans le code behind j'instancie un nouveau
Contact.
Co = new Contact()
puis je mets à jour les propriétés.
Co.Nom = TextNom.Text;
Mais pour la Date de naissance qui n'et pas obligatoire j'ai un problème.
Car si aucune date n'est saisie j'ai une erreur lorsque je fais
Co.DateNaiss = TextDateNaiss;

Comment faire pour remplir ma propriété DateNaissance avec une valeur vide ?
Si ce n'est pas possible, suis je obligé de changer le type de ma propriété
de DateTime en string ?

Merci par avance

1 réponse

Avatar
Ambassadeur Kosh
> Comment faire pour remplir ma propriété DateNaissance avec une valeur vide


?
Si ce n'est pas possible, suis je obligé de changer le type de ma


propriété
de DateTime en string ?



1) on ne fait pas. la "nullabilité", c'est le probleme du datarow.
2) en 2005, on peut faire porcas avec un DateTime? au lieu d'un DateTime, ce
qui permet de faire passer null dans la valeur.
3) la meilleure solution à mon sens, c'est une classe Nullable<T>. pour
TÚteTime, on aurait ceci

struct NullableDateTime
{
public NullableDateTime()
{
}

public void SetToNull()
{
this.isNull=true ;
}

public DateTime Value
{
get
{
Debug.Assert(!isNull) ;
return value ;
}
set
{
this.value = value ;
isNullúlse ;
}
}

public bool IsNull()
{
return isNull ;
}

private bool isNull ;
private DateTime value ;
}

class ou struct, à voir selon ses préférences.
"la" pratique pour detecter si le texte représente la valeur "#Null", en
général, c'est un string nullText qui contient la valeur à comparer.
il existe une façon de faire qui consiste à mettre des object partout et
vehiculer DBNull quand c'est le cas ou la DateTime. je m'étend sur le sujet
?? :o)