Working with the ObjectDataSource and DateTime Type

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"] =




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 ! 


Similar Articles