I think all of us have had a few minutes of "respite" between projects, when you can look back and ask yourself: "What a line of the code I have written, which I have searched so for a lot of time? May be I will tell my friend about it !". This is some kind of "tips", which help us to save time and/or choose more "suitable" decisions for our projects.
Let's suppose the following situation: on some form (or user control) you use some GridView control to display and edit some data; you use some ObjectDataSource as DataSourse for your GridView (see fig. 1); your DateUpdate is type of DateTime and you have to perform it as "Day/Month/Year" (for example, "January, twenty third, 2008"will look like this : "23/01/2008", but not "01/23/2008").
Figure 1.
Now, your ObjectDataSource is configured so, that a method for "update" accept some BO (business object), but not each property of your BO (fig. 2)
Figure 2.
In this case you will get the following error: "Cannot convert value of parameter …" (even if every your "Culture" is set to "right" region):
Figure 3.
This is the bug (nothing doing!). There are some ways to bypass this point. One of them is a little "to deceive" our DataSourceObject and allow to work not with DateTime, but just to parse your DateTime type (in itself!):
protected void GridViewGeneral_RowUpdating
(object sender, GridViewUpdateEventArgs e)
{
e.OldValues["DateUpdate"] =
DateTime.Parse(e.OldValues["DateUpdate"].ToString());
}
Don't ask me why, but it works (It is very similar to old joke. A little boy come to his father, programmer, and ask: "Why in the morning the Sun is in the East, and in the evening - in the West". The father, programmer!, answer : "I do not know, but it works! Do not touch it!!! ")
Good luck in programming !