J'ai un DataGridView lié à une table à partir d'une base de données .sdf via un BindSource. L'affichage de la colonne de date date comme "jj/aaaa HH: mm: ss". e .: "27/2/1971 00:00:00".Date du format de SQLCE à afficher dans DataGridView
Je veux le faire afficher juste "27/02/1971" à sa place. J'ai essayé d'appliquer DataGridViewCellStyle {format = jj/MM/aaaa} mais rien ne se passe, événement avec d'autres formats préconstruits. De l'autre côté, il y a un formulaire avec un MasketTextBox avec un masque "jj/MM/aaaa" à son entrée qui est lié à la même colonne et utilise un gestionnaire d'événement Parse et Format avant l'affichage et l'envoie à la db.
Binding dataNascimentoBinding = new Binding("Text", this.source, "Nascimento", true);
dataNascimentoBinding.Format += new ConvertEventHandler(Util.formatDateConvertEventHandler);
dataNascimentoBinding.Parse += new ConvertEventHandler(Util.parseDateConvertEventHandler);
this.dataNascimentoTxt.DataBindings.Add(dataNascimentoBinding);
public static string convertDateString2DateString(string dateString, string inputFormat, string outputFormat)
{
DateTime date = DateTime.ParseExact(dateString, inputFormat, DateTimeFormatInfo.InvariantInfo);
return String.Format("{0:" + outputFormat + "}", date);
}
public static void formatDateConvertEventHandler(object sender, ConvertEventArgs e)
{
if (e.DesiredType != typeof(string)) return;
if (e.Value.GetType() != typeof(string)) return;
String dateString = (string)e.Value;
e.Value = convertDateString2DateString(dateString, "d/M/yyyy HH:mm:ss", "dd/MM/yyyy");
}
public static void parseDateConvertEventHandler(object sender, ConvertEventArgs e)
{
if (e.DesiredType != typeof(string)) return;
if (e.Value.GetType() != typeof(string)) return;
string value = (string)e.Value;
try
{
e.Value = DateTime.ParseExact(value, "dd/MM/yyyy", DateTimeFormatInfo.InvariantInfo);
}
catch
{
return;
}
}
Comme vous pouvez le voir par le code, il a été expexted cette date en provenance de SQL serait une valeur datetime est sa colonne, mais mon eventHandler reçoit une chaîne à la place. De même, la date de résultat de l'analyse doit être une date-heure, mais c'est aussi une chaîne.
Je suis intrigué par cette colonne datetime.