我有一個DataGridView通過BindSource綁定到.sdf數據庫中的表。日期列顯示日期,如「d/M/yyyy HH:mm:ss」。 e .:「27/2/1971 00:00:00」。從SQLCE格式化日期以顯示在DataGridView中
我想讓它只顯示「27/02/1971」代替它。我嘗試應用DataGridViewCellStyle {format = dd/MM/yyyy},但沒有任何反應,其他預構建格式的事件。
另一方面,有一個帶有「dd/MM/yyyy」掩碼的MasketTextBox窗體,它綁定到同一列,並在顯示之前使用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;
}
}
喜歡,你可以通過它expexted該日期從SQL未來將是一個日期時間值是其列,但我的事件處理程序正在接收一個字符串,而不是代碼中看到。同樣,解析的結果日期應該是日期時間,但也是一個字符串。
我很困惑處理這個日期時間列。