The problem arises when the user clicks the update button and we have to turn that string (dropdown.SelectedValue) back into a DateTime. Here the ObjectDataSource messes up and converts the string back using the InvariantCulture, which throws an exception since "30/10/2006" isn't a valid date.
This Microsoft Connect link summarizes the issue a bit more.
I was unhappy with the workaround posted there so I figured out a better one. Basically we just do the DateTime conversion ourselves, instead of letting the ObjectDataSource handle it.
1. Handle the ObjectDataSource Updating event.
2. In the handler, replace the string input parameter with its culturally aware DateTime equivalent, using something like:
TypeConverter converter =
TypeDescriptor.GetConverter(typeof(DateTime));
e.InputParameters["DateField"] =
converter.ConvertFromString(
e.InputParameters["DateField"] as string);
TypeDescriptor.GetConverter(typeof(DateTime));
e.InputParameters["DateField"] =
converter.ConvertFromString(
e.InputParameters["DateField"] as string);
And that's it.