У меня есть DataGridView, связанный с таблицей из базы данных .sdf через BindSource. В столбце даты отображаются даты типа «д / м / гггг чч: мм: сс». e .: "27/2/1971 00:00:00".
Я хочу, чтобы на его месте отображалось только «27.02.1971». Я пытался применить DataGridViewCellStyle {format = dd / MM / yyyy}, но ничего не происходит, событие с другими предварительно созданными форматами.
С другой стороны, есть форма с MasketTextBox с маской "dd / MM / yyyy" на входе, которая привязана к тому же столбцу и использует обработчик событий Parse и Format перед отображением и отправляет его в ДБ.
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;
}
}
Как вы можете видеть по коду, который ожидался, Date, приходящий из SQL, будет значением DateTime, как и его столбец, но мой EventHandler вместо этого получает строку. Аналогично, в качестве даты результата для анализа должен быть указан datetime, но также и строка.
Я озадачен, имея дело с этим столбцом даты и времени.