I have a custom databinder that works geat for the integer that is an ODate date type. It displays correctly. How do I get the reverse when I save?
private void Binding_ODateFormat(object sender, ConvertEventArgs e)
{
if (e.DesiredType == typeof(string) && e.Value is int doubleValue)
{
e.Value = String.Format("{0:MM/dd/yyyy}", DateTime.FromOADate(doubleValue));
}
}
private void Binding_ODateParse(object sender, ConvertEventArgs e)
{
if (e.DesiredType == typeof(double) && e.Value is string stringValue)
{
DateTime dt = DateTime.Parse(stringValue);
double result = dt.ToOADate();
e.Value = result;
}
}
That works perfectly fine coming from the database, I need it to go back as integer just as smoothly.
I do not know where to go from here, any suggestions would be great.
Fix:
private void Binding_ODateFormat(object sender, ConvertEventArgs e)
{
if (e.DesiredType == typeof(string) && e.Value is Int32
doubleValue && (Int32)e.Value > 0)
{
e.Value = String.Format("{0:MM/dd/yyyy}",
DateTime.FromOADate(doubleValue));
}
}
private void Binding_ODateParse(object sender, ConvertEventArgs e)
{
if (e.DesiredType == typeof(Int32) && e.Value is string
stringValue)
{
DateTime dt;
if (DateTime.TryParse(stringValue, out dt))
{
Int32 result = Convert.ToInt32(dt.ToOADate());
e.Value = result;
}
else
{
e.Value = 0;
}
}
}